Tervehdys Putkalaiset. Tarvitsisin apua, omat riittämättömät ohjelmointitaitoni eivät riitä. Tarvitsisin koodinpätkän joka tulostaa ruudulle (ja myös .txt-tiedostoon) kaikki mahdolliset 13 merkin jonot, joissa jokaisessa 13:sta kohdassa varioi merkit 1,x ja 2. Niitähän on kaikkiaan n. 1.5miljoonaa: 3 pot 13. Muotoilu ei olisi pääosassa, eli rivit voisivat tulostua vaikka vain putkeen jollain välimerkillä erotettuina.
Miten vaikea kys. toteutus olisi?
Tulosjoukkohan alkaisi:
1111111111111,x111111111111,1x11111111111,
tosin tulostusjärjestykselläkään ei olisi niin suurta merkitystä.
T: Veikkaaja
Tuossa on C-kielinen ohjelma, joka tulostaa haluamasi rivit:
#include <stdio.h> char rivi[15]; void haku(int k) { if (k == 13) { printf("%s\n", rivi); return; } rivi[k] = '1'; haku(k + 1); rivi[k] = 'x'; haku(k + 1); rivi[k] = '2'; haku(k + 1); } int main(void) { rivi[13] = 0; haku(0); return 0; }
Voit ohjata tulostuksen tiedostoon näin:
veikkaus > veikkaus.txt
Tuhannet kiitokset Laaksonen. Voisitko vielä vääntää rautalangasta, että miten ajan tuon ohjelman? Nimimerkillä melko vähän koodannut. Anteeksi tyhmyyteni.
1) Tallennat sen tiedostoon, esim. veikkaus.c
2) Käännät sen sillä C-kääntäjällä jota yleensäkin käytät
3) Ajat käännetyn ohjelman (esim. Windowsissa .exe-tiedoston)
Oletan seuraavaksi, että käytössäsi on Windows XP tai vastaava.
Saitko ohjelman käännettyä exe-tiedostoksi? Jos et saanut, voit kopioida exe-tiedoston tästä:
http://koti.mbnet.fi/pllk/muut/veikkaus.exe
Oletan seuraavaksi, että exe-tiedosto on hakemistossa c:\omat\koodi.
Ohjelma on järkevintä käynnistää komentoriviltä:
1. Valitse Start->Run (Käynnistä->Suorita) ja kirjoita "cmd".
2. Kirjoita "cd c:\omat\koodi" ja paina Enter.
3. Kirjoita "veikkaus" ja paina Enter, jolloin ohjelma käynnistyy.
Jos haluat keskeyttää ohjelman, paina Control + C. Jos haluat, että ohjelma tulostaa rivit näytön sijasta tiedostoon, käynnistä se komennolla "veikkaus > veikkaus.txt". Tässä veikkaus.txt on tiedosto, johon ohjelma tulostaa rivit.
Olenko nyt ihan ulapalla, vai eikö niitä rivejä ole 13 potenssiin 3 eikä 3 potenssiin 13?
Hakoulinen kirjoitti:
Olenko nyt ihan ulapalla, vai eikö niitä rivejä ole 13 potenssiin 3 eikä 3 potenssiin 13?
Niitä on 3 potenssiin 13. Vertaa ehkä tutumpiin bitteihin: 2^4, 2^8...
133 < 313, koska 13 log 3 > 3 log 13 -> 13 log 3 / 3 > log 13.
Kiitokset .exe filestä. Homma toimii. Suurkiitokset.
Aihe on jo aika vanha, joten et voi enää vastata siihen.