En egyszer gyerekkoromban megtanultam. Ott kezdodik, hogy az E betu az 1 db pont, es a T betu az egy darab vonas (marmint nyilvan jelolessel, amugy rovid meg hosszu), szoval mindennek van kezdoszelete.
Mondjuk a szamjegyek fixen 5 jelesek, de itt szoveg atvitelerol volt szo.
Megvallom, hogy nem vagyok Morse-szakértő, tehát egy lakatlan szigeten bizonyára bajban lennék. Én abból indultam ki, hogy Morse-kóddal lehet kommunikálni, tehát úgy van kitalálva a rendszer (gondoltam én), hogy a kezdőszeletek nem okozhatnak problémát.
Binarisban morze-kodkent: ott van ne'mi problema a betuhatarok megtalalasaval, mivel siman kezdoszeletei egymasnak nehany esetben. Es mivel pont hogy a legkisebb kodhosszra torekedtek egy atlagos (angol nyelvu) uzenetnel, ezert a szuneteket onkenyesen kirakva is eleg valoszinuleg kapsz csupa beture atfordithato kodot. Mondjuk az mas, hogy angolul ertelmeset hanyszor, de az osszes "logikus" vagas megtalalasa eleg idoigenyes.
[Amugy en reflexbol is inkabb 7 vagy 8 bites fix hosszra bontanam a binarist... es azt betusiteni, abban me'g annyi tartalek is van, hogy surun fut nem betu kodra akkor, ha elcsuszol.]
Velhetoen aki tomoritessel dolgozik, az tudhatna' a betuk kezdoszelet-mentes atirasat binaris kodokra ugy, hogy az atlag angol szovegek gyakorisagat vegye figyelembe, de ehhez a hajotorott kene fejbol tudja ennek a leggyakrabban hasznalt megvalositasat (mert ugye mar invertalva is masik, de ugyanolyan jo kodolast kapunk, tehat nem eleg a gyakorisagokat sem tudni, abbol sok lehetseges "legjobb" allithato elo). De ha ennyit felkeszul elore, akkor joval kevesebb egyest kell irnia, mint mas modszerekkel:)
Semmi nem tart vissza. Én mindenesetre elsőre binárisban olvasnám, Morse-kódként. Utána 27-es számrendszerben, a számokat szóközzel és angol kisbetűkkel helyettesítve. Utána még agyalnék egy kicsit, majd visszadobnám a palackot a tengerbe. Ennyi.
Szerintem messze túl sok szót vesztegettünk erre a feladatra.
különben meg mi tart vissza attól, hogy 27-esben, 53-asban, vagy binárisban máshogyan olvasd az elejét?
a feladat különben tipikusan informatikus feladat, és itt azért néha nem árt belátni azt is, hogy többféle programnyelv létezik, és baromira processzorfüggő, hogy melyiket fogod alkalmazni (direkt nem oprendszerfüggőt írtam, bár azt is lehetett volna).
egy lakatlan sziget egy papírcsíkkal meg egy írógéppel elég gyenge hardver, a kódfejtőnek nyújorkba meg szinte mindegy...
Szerinted. Pont ez különbözteti meg a matematikai a logikai feladatoktól: a matematikai feladatokban csak logika van, nincs bennük szubjektív értékítélet, pszichológia, meg csalafintaság. Ezt magyaráztam korábban is.
Én ha meglátnék egy nagy halom és üzenetet sejtenék benne, akkor először 2-es számrendszerben írnám le az 1-esek számát, mert szerintem meg az a legegyszerűbb és legkézenfekvőbb. Ha meg 10-es számrendszerben meglátnám a 2602050120120519 kódot, akkor nem biztos, hogy az elejét 26-nak olvasnám, lehet hogy 260-nak vagy 2602-nek stb. Amúgy nem rossz ötlet ezzel a 26-tal kezdeni, de bináris kódot Morse-jelek gyanánt használni legalább olyan jó ötlet.
tehát ezen fölösleges spórolni
Szerinted. Szerintem meg az idő pénz, és nem mindegy hogy 1040 vagy 10100 egyest kell leírni meg visszaolvasni.
naszóval, szerintem nem értettük egymást, de nem baj. itt egy példa:
így néz ki a "Beatles" szó:
2602050120120519
ebből a 26 (az első két számjegy) jelenti azt, hogy ennyi betűs az ábécé, és praktikus oka is van, hogy ne kezdődjön nullával a szám.
egyéb praktikum, hogy az a=01, b=02, stb, hogy minden szám kétjegyű legyen.
innen semmiféle számrendszerbe nem írogatunk, hanem leírunk 2602050120120519 db. 1-est, szerintem ez a legegyszerűbb
(ugye, mondtam, hogy a papírcsíkom végtelen hosszú, tehát ezen fölösleges spórolni, és nem kell hozzá osztás-szorzás)
és a visszafejtés is egyszerű: megszámolod az 1-eseket, leírod a kapott számot, kétjegyenként felosztod, és ott az ábécéd.
igaz, hogy ez 27-es számrendszerbe átírva kisebb szám lesz, és végül kevesebb egyes, de akkor mért ne írhatnám át 153-as számrendszerbe, ami még kisebb szám lesz - megnehezíti a kódolást, mitöbb, a dekódolást is.
Egy 27-es számrendszerbeli számot csupa 1 számmá kódolni és viszont, az ugyanolyan nehéz, mint 10-es számrendszerrel csinálni ugyanezt. Továbbá szükség esetén a kétféle számrendszer között átkódolni egy számot (akár íróeszközzel, akár fejben) összehasonlíthatatlanul kisebb munka, mint leírni vagy visszaolvasni azt a tengernyi sok 1-est.
Ha egy dekódoló megtalál egy irgalmatlan hosszú csíkot 1-esekkel, akkor a következőt javasolom neki:
1. Először írja át kettes számrendszerbe a számot. Ehhez hajtsa ketté a csíkot. Ha fedik egymást az 1-esek (magyarán azok száma páros), akkor az utolsó számjegy 0, és folytassa a munkát a fele akkora csíkkal. Ha nem fedik egymást az 1-esek (magyarán azok száma páratlan), akkor az utolsó számjegy 1, vágjon le egy 1-est, és folytassa a munkát a fele akkora csíkkal. Ezzel a módszerrel egy 50 karakteres üzenet párszáz lépésben bináris kóddá alakul.
2. Ha van egy párszáz számjegyes bináris szám a kezében, akkor nézze meg, hogy nem Morse-kód-e, ahogy javasoltam. Ha igen, akkor megvan az üzenet. Ha nem Morse-kód, akkor írja át 3-as, 4-es stb. számrendszerekbe, míg nem talál értelmet bennük. A 27-es számrendszerbeli átírást betűkkel és szóközzel interpretálva esélyes, hogy értelmes üzenetet talál, hiszen ezt a kódolást javasoltam. Az egyes számrendszerekbe való átírás gyerekjáték némi papíron számolással vagy egyszerű programmal.
Az Általad említett prímhatványos eljárást Gödel-számozásnak (is) hívják és akkor érdemes használni, ha az ábécé végtelen (mint pl. az elsőrendű logikában, ahol megszámlálható sok változójel van). Véges ábécé esetén a számrendszer a leghatékonyabb eljárás, annyi alapú számrendszert használva, ahány karakter van. Ezt egyébként könnyű bizonyítani: ha k darab karaktered van, akkor az n hosszú sztringek száma kn, tehát ezeket nem tudod mind kn-nél kisebb pozitív egész számba elkódolni. A számrendszeres kódolás pedig pontosan az első kn pozitív egész számba kódol, tehát optimális.
Természetesen az emberi szöveg nem random, tehát általában jobban tömöríthető, mint amit a számrendszeres eljárás ad, de ez már más tészta. Egy 50 karakteres szövegen csak igen kicsit lehet tömöríteni, főleg ha a szöveg részévé akarod tenni a dekódolási eljárást is!
Összefoglalva: a prímhatványos eljárás bonyolultabb, kevésbé kézenfekvő, és legfőképpen kevésbé hatékony az adott célra, mint amit én javasoltam.
Van benne valami, de egy papírcsíkon kissé bonyolult lenne íróeszköz nélkül a 27-es számrendszerbe való oda-vissza váltás...
De ha még sikerülne is, időigényes, energiaigényes, egy 80jegyű szám esetében pedig elkég sok számjegyet kéne leírnod ahhoz, hogy a huszonhét 80-dik hatványát kiszámold (papírcsíkokon)
és különben sem az volt a kérdés, hogy mennyi pénzt keresel, ha a megmaradt papírcsíkodat sorosgyuri megveszi kilóra :P
tulajdonképpen megoldottad, csak nem jártál teljesen a végére...
az általad leírt módon kapott számsort már nem kell átírni semmilyen számrendszerbe (így a kódfejtőnek vissza sem), mert bőven, kölcsönösen egyértelmű az a szám is is, tehát annyi 1-es kell, amennyi az adott számsor szám szerinti értéke (10-es számrendszerben - mivel nem a babilóniaiaknak írunk)
még annyit:
hogy egyértelműbb legyen a megoldás, kizárólag kétjegyű számokat érdemes rendelni a betűkhöz, tehát az A=01, a szóköz meg mondjuk 00 - de lehetne 99 is.
valamint, hogy az egész sorozat ne kezdődjön 0-val - mert így félreérthető -, érdemes egy kétjegyű számot a sor elejére tenni, például a 26-ot, mely jelzi, hogy hány betűs a használt abc. és még, gondolom, lehet csiszolgatni.
de azért gratulálok, én sem csinálok végig minden megoldást, elég, ha az elv megvan :)
A sorozatot tekintehted ugy is, mint egy egesz szam leirasat oly modon, hogy az i. primszamot hanyadik hatvanykitevovel tartalmazza.
Mondjuk megneznem azt a visszafejtest:) De most igy kora reggel elso blikkre azt mondom, hogy jo esellyel kevesebb 1-est kell leutnod.
[Errol eszembe jutott egy tetelleiras, ha megtalalom, beteszem ide rejtvenynek, hogy melyik tetel az:) Bar az tiszta matematika, de rejtvenynek is elmegy, elrettento pelda volt a Szendrei Agnes-fele "Hogyan írjunk matematikát?" speckollon. Szerintem nem tudta, hogy parhuzamosan a Kerchy kb. hasonlo rejtvenyes modon szivatja absztrakt algebraval a fizikusokat...]
Őszintén szólva nem ismerek egyszerűbb eljárást egy véges ábécéből készült sztring természetes számba való elkódolásának, minthogy az ábécé betűit számjegyeknek fogjuk fel egy megfelelő alapú számrendszerben. És hát a dekódoló első gondolata is számrendszer lesz, hiszen a természetes számokat a mindennapokban is így jelenítjük meg. Az hogy 10-es, vagy 2-es, vagy 27-es a számrendszer, az már mellékes. Szóval részemről szabad a gazda.
Ez nem logikai feladat, és különben is hülyeség, mert:
1. Írógépbe hogy fűzöl be papírcsíkot
2. Egy Hamingway-regényt így kódolni annyi papír kéne, ami egy tankhajóba se férne be, nem hogy egy üvegbe.
3. Nincs megadva MINDEN feltétel, mert azt is megtehetem, hogy a nullákat a papírcsík összehajtásával vagy a szélének a betépésével jelzem, és máris 2 jel áll rendelkezésemre.
Hogy egyszerűbb-e, azt nem tudom, de lehet azt is csinálni, hogy Morse-kóddal leírom az üzenetet, majd átírom a rövid/hosszú jeleket 0/1 számjegyekre, majd a kapott 2-es számrendszerbeli számnyi 1-est írnék a csíkra. Ennek előnye, hogy a 2-es számrendszer és a Morse-kód elég standard.
Én azt csinálnám, hogy megírnám az üzenetemet angol nyelven kisbetűkkel és szóközöket használva, a betűket és a szóközöket kicserélném 0-tól 26-ig terjedő számokkal, venném az így kapott 27-es számrendszerbeli számot, végül leírnék annyi darab 1-est, amennyi ez a szám. Egy okos megtalálónak lenne esélye ezt megfejteni, feltéve hogy tud angolul és a kapott 1042 darab 1-est hajlandó átírni 27-es számrendszerbe (mert ez jódarabig eltart és elég unalmas munka).