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?
 
Liittynyt
25.10.2016
Viestejä
89
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];
}
 
Liittynyt
07.01.2021
Viestejä
678
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.
 
Toggle Sidebar

Uusimmat viestit

Statistiikka

Viestiketjut
237 557
Viestejä
4 166 185
Jäsenet
70 422
Uusin jäsen
Minibee

Hinta.fi

Ylös Bottom