koodinsa tulostava ohjelma

Osaatteko tehdä eri kielillä ohjelmia, jotka ajettaessa tulostavat oman lähdekoodinsa? Ohjelma ei saa lukea levyltä mitään vaan sen pitää pystyä tulostamaan oma lähdekoodinsa ihan "sisäisesti", eli esim. C:ssä saa käyttää vain printf:ää ja vastaavia funktioita eikä ollenkaan lukufunktioita.
15752
Äänestä

Muut lukivat myös

Vastaukset 15

Vanhimmat

näetkö tällaiselle ohjelmalle jotain sovelluskäyttöäkin? sen jälkeen kun ohjelma on käännetty konekieleksi/tavukoodiksi ei lähdekoodia saa kuin konekieli/tavukoodi-muodossa. käytännössä tämä vaatii suoraan koodisegmentiltä lukemista eikä onnistu kuin matalan tason operaatioilla.

Äänestä
  • Väitän, että et osaa kirjoittaa sellaista ohjelmaa. Kyseessä on ohjelmointihaaste, joka ei ole ihan triviaali, mutta tehtävissä jokseenkin kaikilla kielillä.

    Osaatko sinä kirjoittaa ohjelman, joka tulostaa tasan tarkkaan oman lähdekoodinsa lukematta sitä mistään tiedostosta? Eli osaatko tehdä ohjelman, joka käyttää vain ja ainoastaan tulostusta ja ohjelman sisäisiä tietorakenteita hyväkseen?

    "käytännössä tämä vaatii suoraan koodisegmentiltä lukemista eikä onnistu kuin matalan tason operaatioilla."

    Se, mitä pyysin, onnistuu helposti kun vähän jaksaa miettiä.

    Äänestä

  • 09iafe kirjoitti:

    Väitän, että et osaa kirjoittaa sellaista ohjelmaa. Kyseessä on ohjelmointihaaste, joka ei ole ihan triviaali, mutta tehtävissä jokseenkin kaikilla kielillä.

    Osaatko sinä kirjoittaa ohjelman, joka tulostaa tasan tarkkaan oman lähdekoodinsa lukematta sitä mistään tiedostosta? Eli osaatko tehdä ohjelman, joka käyttää vain ja ainoastaan tulostusta ja ohjelman sisäisiä tietorakenteita hyväkseen?

    "käytännössä tämä vaatii suoraan koodisegmentiltä lukemista eikä onnistu kuin matalan tason operaatioilla."

    Se, mitä pyysin, onnistuu helposti kun vähän jaksaa miettiä.

    no siis, totta kai se onnistuu jos kopsaa koko lähdekoodin johonkin vakiomerkkijonomuuttujaan ja tulostaa tämän sitten ohjelman ajon aikana, mutta tämä ei varmaan ole se haaste mitä ajat takaa.

    Äänestä


  • kompa? kirjoitti:

    no siis, totta kai se onnistuu jos kopsaa koko lähdekoodin johonkin vakiomerkkijonomuuttujaan ja tulostaa tämän sitten ohjelman ajon aikana, mutta tämä ei varmaan ole se haaste mitä ajat takaa.

    "totta kai se onnistuu jos kopsaa koko lähdekoodin johonkin vakiomerkkijonomuuttujaan ja tulostaa tämän sitten ohjelman ajon aikana"

    Kokeilitko? Ei onnistu noin suoraviivaisesti.

    Ennenkuin katsot vinkkiä toisesta vastauksesta, niin koita ratkaista tehtävä itse. Se on ihan mielenkiintoinen haaste ohjelmoinnista pitäville.

    Äänestä

#include

int main(void)
{
printf("#include \n\nint main(void)\n{\nprintf(\"TÄSTÄ TULIS LOPUTON TUNNELI!\");\n}");
}

Äänestä
  • elikkä unohtui

    Äänestä

  • "...printf(\"TÄSTÄ TULIS LOPUTON TUNNELI!\");\n}"); ..."

    Mutta tuon ongelman kiertäminen tässä juuri onkin se "pihvi".

    Äänestä

ohjelmalistauksen kuvaputkelta A4-lehtiölle lyijykynällä ja TOISELLA KÄDELLÄ.

Äänestä
  • Näyttää toimivan!

    Menikö kauan tekemisessä? Koitin päivällä kikkailla C :lla hieman eri tekniikalla, mutta en saanut toimimaan. Pitää yrittää perjantaina uusiksi, kun on paremmin aikaa.

    Meniköhän muilta luu kurkkuun :)

    Äänestä

  • 09iafe kirjoitti:

    Näyttää toimivan!

    Menikö kauan tekemisessä? Koitin päivällä kikkailla C :lla hieman eri tekniikalla, mutta en saanut toimimaan. Pitää yrittää perjantaina uusiksi, kun on paremmin aikaa.

    Meniköhän muilta luu kurkkuun :)

    Menihän siinä ainakin tunti (ellei toinenkin) sählätessä, olisi pitänyt heti tajuta käyttää "risuaitaa". Linkeissä näköjään muitakin "tekniikoita". Pitänee kokeilla vielä ainakin Lispillä ja Pythonilla.

    Äänestä

  • ----------- kirjoitti:

    Menihän siinä ainakin tunti (ellei toinenkin) sählätessä, olisi pitänyt heti tajuta käyttää "risuaitaa". Linkeissä näköjään muitakin "tekniikoita". Pitänee kokeilla vielä ainakin Lispillä ja Pythonilla.

    löyty tommonen:
    http://netsonic.fi/~unioni31/tulosta-oma.lisp

    Äänestä

  • ----------- kirjoitti:

    Menihän siinä ainakin tunti (ellei toinenkin) sählätessä, olisi pitänyt heti tajuta käyttää "risuaitaa". Linkeissä näköjään muitakin "tekniikoita". Pitänee kokeilla vielä ainakin Lispillä ja Pythonilla.

    Lyhin mahdollinen Python-ohjelma, joka tulostaa itsensä on seuraavien lainausmerkkien välissä: "".

    Tehtävä on mielenkiintoisempi, jos halutaan sellainen ohjelma, joka sisältää ainakin yhden merkin. Minulla on 92 merkin pituinen ratkaisu, ja olisi hauskaa nähdä lyhyempi. Sellainen voi hyvinkin löytyä...

    Äänestä

  • ----------- kirjoitti:

    Tämä on vähän huijausta, mutta komentoriviltä, eri tarkemmin REPListä onnistuu tämä

    (IDENTITY -)

    Koita vaan. Kun käyttää REPLiä, tuo - on nykyinen syöte. Jos käännät tai ajat muuten ohjelman, se ei kuitenkaan toimi. Vain suoraan syötettynä siis.

    Äänestä

Kommentoi aloitusta


09iafe kirjoitti:

Osaatteko tehdä eri kielillä ohjelmia, jotka ajettaessa tulostavat oman lähdekoodinsa? Ohjelma ei saa lukea levyltä mitään vaan sen pitää pystyä tulostamaan oma lähdekoodinsa ihan "sisäisesti", eli esim. C:ssä saa käyttää vain printf:ää ja vastaavia funktioita eikä ollenkaan lukufunktioita.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu