Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

This is a Petooh Hello World #35

Open
rdebath opened this issue Oct 3, 2015 · 4 comments · May be fixed by #38
Open

This is a Petooh Hello World #35

rdebath opened this issue Oct 3, 2015 · 4 comments · May be fixed by #38

Comments

@rdebath
Copy link

rdebath commented Oct 3, 2015

From the documentation and example interpreters this is a valid Petooh "Hello World!" program.
For various reasons it appears that only one of the interpreters can run it successfully.

DKudMZapHIVAhBYKoKVnoKboKXcoKonRjvKoKnoKLBoYALJKDGuTdkWOkNcjuSXcdMaEVMFC
ntMXlPhTfKToXKSSoFzVKobbcKjBXBovBcKoKfZVToSvKoKoyKotKWTuvsdVVyEisDVvaRjp
hkYudYHDkQudwahTNKukmarqiekMDTKudxpahKJsudDahCDsKoxKutBdVvJmahUpIqHDPkmO
sXFKgCUuqdtKokuiEIYzVdXKpSRonGxIlKAozUKudpaNhKoXKbHoKPsDxuvpdsqamVBzAchl
gKsMoKEoKPoNKEudKuHpfxdVahKudbNxPcBjHCAtGkmOKuXdaqqTFzCLhKoSKZoKoJEikuFd
ahkuIdahSKoKZvzNDnqNYEPZoYKoKpXMvuWwNRCdSyzahCkuRdNniEkRupdaPCNyshFpZikB
udahZBkfXudxKuHIsdnahknOXkOqkfOjkOkOwByyKuTtkUaretgFkHqKudaDAZhVDUkpOtKu
vdahMVBKjAoKoMKoKukDaVyrsMRHUFYekRYzpBvKukcaRAcAWEreHfzUpvZNkRKocKoAKNoC
KuTkZxtVzGNgasrekFqiGACiRJtytKJMAuLLtEdaimshCBkpOKsEqwuklarbfUfqTBekmGzz
nkuqCdSIJnamRhkEluPcfZdahKoKFtWCZudnYfKEuPwUqdjagxhSKQxudKjszZoKyNudARVS
sahWcKUQYnHoykudKvcDUcuEydqtahHKyuUdalChkQudlGvAkudJyaiHhMRCFEmspckmfBOI
kwONkOqkOkJVOjkDOnkcfOkCqLGDOkOVkDXOkOkOfkRTOFTZkOQKYwYuAkParjeTkNUEMnCC
KudaNhbKuMVTmpAVsLdtpaThKupknfzzBayfcDUreckKoKXDMosbjGsJmzIQXKYzEoqjKqLu
kPCxmVqarxtetbSMkkJOcpkOLqVwEkCSgxXMPVHtOkQlOnZZEiGzGXLXTkqgvlqOjkRLOKuk
BIQDarPyeXkFYsEAtDkTQOTkOLsEbvkXvOkOfCkxpOsRQtcAqVkFOWYyHkcZXRnvWABbEfgO
PiGkAROKsPukbagfMNmBvxCQrTegBkKiIZCsuRwqXdqayICmiqJhLnLKXoKjwukSyaHrRTlp
meLFkTmvKEuTdaPhTtcbmLKoxKukaxrekQcvITwHEiETIzMcpTRUpHqVCZYpMCIBgWxlijcZ
@rdebath
Copy link
Author

rdebath commented Oct 3, 2015

FYI:
Here's another interpreter that can run that code. (For a modern Ruby)
And a link to another test program: Mandelbrot set

eval 'm=Hash.new(p=0);'+ARGF.read.gsub(/[^adehkKoOru]/,'').gsub(
    /(kO|Ko|[Kk]u(dah|karek|d))/,
    'Kudah' => 'p+=1;',
    'kudah' => 'p-=1;',
    'Ko' => 'm[p]+=1;',
    'kO' => 'm[p]-=1;',
    'Kud' => '(',
    'kud' => ')while((m[p]&=255)!=0);',
    'Kukarek' => 'putc m[p];',
    'kukarek' => 'm[p]=STDIN.getbyte if !STDIN.eof;')

@ilyakaznacheev
Copy link
Contributor

It seems that code is not valid and returns something like "H������� ����"

@ilyakaznacheev
Copy link
Contributor

Checked with different implementations even after invalid character removal.

This was referenced Oct 27, 2018
@rdebath
Copy link
Author

rdebath commented Oct 29, 2018

This is an indication of broken looping constructs in the embedded brainfuck interpreters.
As I said, almost every interpreter was broken at the time.

You can run the BF translation with any standard interpreter, and I've put the code below so you can try others than the one I linked.

>++++++++[-<+++++++++>]<.>>+>-[+]++>++>+++[>[->+++<<+++>]<<]>-----.>->
+++..+++.>-.<<+[>[+>+]>>]<--------------.>>.+++.------.--------.>+.>+.

The cleaned Petooh translation is

Kudah Ko Ko Ko Ko Ko Ko Ko Ko Kud kO kudah Ko Ko Ko Ko Ko Ko Ko Ko Ko
Kudah kud kudah Kukarek Kudah Kudah Ko Kudah kO Kud Ko kud Ko Ko Kudah
Ko Ko Kudah Ko Ko Ko Kud Kudah Kud kO Kudah Ko Ko Ko kudah kudah Ko Ko
Ko Kudah kud kudah kudah kud Kudah kO kO kO kO kO Kukarek Kudah kO Kudah
Ko Ko Ko Kukarek Kukarek Ko Ko Ko Kukarek Kudah kO Kukarek kudah kudah
Ko Kud Kudah Kud Ko Kudah Ko kud Kudah Kudah kud kudah kO kO kO kO kO kO
kO kO kO kO kO kO kO kO Kukarek Kudah Kudah Kukarek Ko Ko Ko Kukarek kO
kO kO kO kO kO Kukarek kO kO kO kO kO kO kO kO Kukarek Kudah Ko Kukarek
Kudah Ko Kukarek

Another working BF interpreter is this:

#!/usr/bin/ruby
eval 'm=Hash.new(p=0);'+ARGF.read.gsub(/./,
    '<'=>'p-=1;',
    '>'=>'p+=1;',
    '-'=>'m[p]-=1;',
    '+'=>'m[p]+=1;',
    '['=>'(',
    ']'=>')while((m[p]&=255)!=0);',
    '.'=>'putc m[p];',
    ','=>'m[p]=STDIN.getbyte if !STDIN.eof;')

Note your example HW from #38 is a trivial multiply loop, runnable by many broken interpreters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants