Kombinace prvků polí – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kombinace prvků polí – Java – Fórum – Programujte.comKombinace prvků polí – Java – Fórum – Programujte.com

 

JIRKAS0
Duch
20. 1. 2013   #1
-
0
-

Ahoj, už nad tímto asi školáckým problémem nadávám dost dlouhou dobu a tak jsem se odhodlal vyhledat pomoc :D
Potřebuju vypsat všechny kombinace prvků polí. Názorně pro pochopení:

Vstup

Pole0 obsahuje (slon, chodí, olovo)

Pole1 obsahuje (kočka, pes, prase, mamut)
pole2 obsahuje (žere, prdí, vylučuje)
pole3 obsahuje (trávu, oves, seno)

Slona nahrazuji výrazy z pole1, chodí z pole2 a olovo polem3.
Potřeboval bych skládat stringy ve tvaru "Kočka žere trávu". Ale každý element s každým, přičemž slova v polích 1 až 3 jsou generována z pole0.

Následuje zdroják aby zde přítomní neřekli, že sem se nesnažil :) Hledím do toho jak trouba a potřeboval bych prosím nakopnout, popřípadě říct co napsat do googlu. Díky předem

        String keywords = "kolo pevný disk";
        String words[] = keywords.split(" ");

        synonyms s = new synonyms();
        wroots w = new wroots();
        Collection synonyms, roots;


        for (String word : words) {
            if (word.length() > 3) {

                synonyms = s.getSynonyms(word);
                roots = w.getRoots(word);

                ArrayList<String> words2 = new ArrayList();
                Collection w2 = new ArrayList();
                w2 = Arrays.asList(words);
                words2.addAll(w2);
                String a = null;
                try {
                    words2.remove(word);
                } catch (Exception e) {
                    a = e.toString();

                }
                Collection pridat = new ArrayList();
                pridat.addAll(synonyms);
                pridat.addAll(roots);

                for (Object e : pridat) {
                    String ss = (String) e;
                    String zbytek = null;
                    for (Object e1 : words2) {
                        zbytek += (String) e1;
                    }
                    String noveDotaz = ss + zbytek;
                    System.out.println(noveDotaz);
                }
            }
        }
Nahlásit jako SPAM
IP: 212.79.105.–
zlz
~ Anonymní uživatel
634 příspěvků
20. 1. 2013   #2
-
0
-

Potřebuješ nějaký konkrétní způsob řešení, nebo stačí, když to bude fungovat?

String[] pole1 = { "slon", "kočka", "pes", "prase", "mamut" };
String[] pole2 = { "chodí", "žere", "prdí", "vylučuje" };
String[] pole3 = { "olovo", "trávu", "oves", "seno" };

for (String w1: pole1) {
    for (String w2: pole2) {
        for (String w3: pole3) {
            System.out.println(w1 + " " + w2 + " " + w3);
        }
    }
}
Nahlásit jako SPAM
IP: 80.188.216.–
Flowy0
Věrný člen
20. 1. 2013   #3
-
0
-

tvoj kod obsahuje prvky ktore zatial nepoznam tak ho nejdem moc riesit ... predpokladam ze mas problem s urcenim opakovania

polích 1 až 3 jsou generována z pole0 ... verim ze si myslel ze su doplnovane resp kombinacie poli su zoradene podla vzoru v 0

samozrejme budes potrebovat pole ktore bude urcovat ktore slovo je podmet a ktore predmet atd ... toto by som spravil asi zlucenim poli1-3 do jedneho 2D pola = { {pole1},{pole2},{pole3} } (v pozadovanom poradi samozrejme)

ak mas urcene ze vzdy budu tri slova tak si spravis tri vnorene cyklusy (index x,y,z) ... ako opisuje zlz

trochu univerzalnejsi sposob by bol spravit si na zaciatku pole int s poctom prvkov rovnakym ako je pocet slov vo vzore (resp pocet poli) ... a tu budes vzdy vkladat index na danej pozicii a tento budes zvysovat ... cize pocet opakovani bude rovny poctu riadkov ... pocet riadkov zistis bud http://sk.wikipedia.org/wiki/Kombin%C3%A1cia_(kombinatorika) alebo si vytvoris pole podobne tomu indexovemu ktore bude obsahovat posledne pozicie {pole1.length,pole2.length,pole3.length} a toto budes vzdy porovnavat s indexovym

Nahlásit jako SPAM
IP: 91.127.64.–
https://github.com/Flowy
Flowy0
Věrný člen
20. 1. 2013   #4
-
0
-

   

int i = 0;
pole0 = { vzorove slova prve odkazujuce na pole2 a druhe na pole1 }
pole1 = { 20 poloziek };
pole2 = { 19 poloziek };
poleSum = { pole2, pole1 };
poleIndex = new [poleSum.length];
poleIndexEnd = new [poleSum.length];
while (i<poleSum.length) { poleIndex[i] = 0; poleIndexEnd[i] = poleSum[i].length; i++ } //poleSum.length == pole0.length
i=0;
do {
	while (i<poleSum.length) {
		print(poleSum[i][ poleIndex[i] ]);
	}
	println();
	for (i=poleSum.length-1;i==0;i--) {
		poleIndex[i]++;
		if (poleIndex[i]==poleSum[i].length) poleIndex[i] == 0;
		else break;
	}
i=0;} while (poleIndex != poleIndexSum)

priklad toho co som myslel

Nahlásit jako SPAM
IP: 91.127.64.–
https://github.com/Flowy
JIRKAS0
Duch
24. 1. 2013   #5
-
0
-

Díky, zkusím to podle těchto návrhů realizovat :)

Nahlásit jako SPAM
IP: 212.79.105.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

Podobná vlákna

Kombinace prvku — založil zdravim

Počet prvků poli — založil suchla12

Sčítání prvků v poli — založil vazbok

Počet prvků v poli — založil Hmm

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý