Shuffle-metodi Dart-ohjelmoinnin harjoitustehtävässä

Liittynyt
21.04.2021
Viestejä
4
Moi, löytyiskö joltain aikaa jeesiä alla olevassa tehtävässä? Kyse shuffle-metodin käytöstä Dartissa.
Väänsin koodia, mutta ei vaan onnistu.

TEHTÄVÄ - PUHEGENERAATTORI
Tehtäväpohjassa on ohjelma, joka tuottaa puheen sille annettujen sanojen perusteella. Muokkaa tehtävää siten, että sanat valitaan satunnaisesti annetuista sanalistoista. Alla esimerkki ohjelman suorituksesta.

Mainiot kansalaiset!
Olemme nyt yllättävässä tilanteessa.


main() {
var kehut = ['Hyvät', 'Mainiot', 'Arvon'];
var kuvaukset = ['mielenkiintoisessa', 'yllättävässä', 'odottamattomassa'];

kehut.shuffle();
kuvaukset.shuffle();

var kehu = satunnainenArvo(kehut);
var kuvaus = satunnainenArvo(kuvaukset);

print('$kehu kansalaiset!');
print('Olemme nyt $kuvaus tilanteessa.');
}

satunnainenArvo(lista) {
return lista[0];
}

Eli toi koodi ei mennyt läpi. Ilmeisesti lista.shuffle ja tai mahdollisesti muu koodin osa jolla saa aikaan satunnaisuutta pitäisi olla satunnainenArvo-funktiossa?
 
Moi, löytyiskö joltain aikaa jeesiä alla olevassa tehtävässä? Kyse shuffle-metodin käytöstä Dartissa.
Väänsin koodia, mutta ei vaan onnistu.

TEHTÄVÄ - PUHEGENERAATTORI
Tehtäväpohjassa on ohjelma, joka tuottaa puheen sille annettujen sanojen perusteella. Muokkaa tehtävää siten, että sanat valitaan satunnaisesti annetuista sanalistoista. Alla esimerkki ohjelman suorituksesta.

Mainiot kansalaiset!
Olemme nyt yllättävässä tilanteessa.


main() {
var kehut = ['Hyvät', 'Mainiot', 'Arvon'];
var kuvaukset = ['mielenkiintoisessa', 'yllättävässä', 'odottamattomassa'];

kehut.shuffle();
kuvaukset.shuffle();

var kehu = satunnainenArvo(kehut);
var kuvaus = satunnainenArvo(kuvaukset);

print('$kehu kansalaiset!');
print('Olemme nyt $kuvaus tilanteessa.');
}

satunnainenArvo(lista) {
return lista[0];
}

Eli toi koodi ei mennyt läpi. Ilmeisesti lista.shuffle ja tai mahdollisesti muu koodin osa jolla saa aikaan satunnaisuutta pitäisi olla satunnainenArvo-funktiossa?
En tiedä meneekö tämä läpi, koska toiminta on periaatteessa sama. Epäilit, että toi lista.shuffle pitäisi olla tuolla funktiossa, niin laitoin sinne.
Koodi:
main() {
  var kehut = ['Hyvät', 'Mainiot', 'Arvon'];
  var kuvaukset = ['mielenkiintoisessa', 'yllättävässä', 'odottamattomassa'];

  //kehut.shuffle();
  //kuvaukset.shuffle();

  var kehu = satunnainenArvo(kehut);
  var kuvaus = satunnainenArvo(kuvaukset);

  print('$kehu kansalaiset!');
  print('Olemme nyt $kuvaus tilanteessa.');
}

satunnainenArvo(lista) {
  lista.shuffle();
  return lista[0];
}
 
Pitää tässä kohtaa mainita, että toimi tai ei, niin oikeassa ohjelmistonkehityksessä tuo shuffle tuossa paikassa ei ole hyvä idea. satunnainenArvo() ei nimenä paljasta, että sivuvaikutuksena parametrina annetun listan järjestys muuttuu. Turvallisempaa olisi kopioida lista, shufflata se ja palauttaa arvo siitä. Tosin jos kyse ei ole harjoitustyöstä, niin olettaisin että Dartistakin löytyy funktio, joka osaa suoraan valita satunnaisen arvon listasta. En tunne Dartia eikä ole kääntäjää, joten itse ongelmaan en osaa auttaa.

Mutta yleisohjeena aloitteleville ohjelmoijille: mitä paremmin välttelette tuollaisia sivuvaikutuksia funktioissa, sitä vähemmän teillä särkee päätä kun ihmettelette, miksi softa toimii kummasti.
 

Uusimmat viestit

Statistiikka

Viestiketjuista
261 820
Viestejä
4 548 289
Jäsenet
74 850
Uusin jäsen
Max-fix

Hinta.fi

Back
Ylös Bottom