Skip to content

Construisez avec moi une langue de golf

Essayez de bien comprendre le code avant de l'utiliser dans votre travail et si vous voulez contribuer quelque chose, vous pouvez le commenter.

Solution :

2. Score : 2938 2583

L'interpréteur modifié est ici sur TIO.

String literal est l'ajout le plus évident au langage, principalement pour combattre les défis de la complexité kolmogorov.

Solutions

1. "Hello, World !" - 20 octets (-28)

#"Hello, World!"[o>]

Tout défi de complexité de kolmogorov peut être complété en utilisant la structure. #""[o>] qui sort la chaîne donnée jusqu'à ce que le 0 après la chaîne soit atteint.

2. 1, 2, Fizz, 4, Buzz - 419 64 octets (-1332)

$1[1+1s:3s%{}"zziF"oooos;0s]:5s%{}"zzuB"oooos;0s]s{:O}]10o:100-]

Merci à @user202729 pour le golf génial sur ce sujet.

3. Produisez le nombre 2014 sans aucun chiffre dans votre code source - 9 octets (-4).

#"ĒĎ"[O>]

Utilise les deux caractères 20 et 14 dans les points de code de Bugle.

4. Hello World obfusqué - 19 octets (-153)

#"Ifmmp!Xpsme"[-o>]

Répond aux règles #1 (pas de HLWDhlwd) et #3 (pas de 27).

5. Chantez un joyeux anniversaire à votre langage de programmation préféré - 98 octets (-230)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"[o>]

6. Nous ne sommes pas étrangers au golf de code, vous connaissez les règles, et moi aussi - 1887 octets (-5006).

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"[o>]

16. Cuire une tranche de Pi - 149 octets (-290)

#"()()()()()()
|3.1415926|
|:53589793|
::2384626|
 ::433832|
  ::79502|
   ::8841|
    ::971|
     ::69|
      ::3|
       __|"[o>]

20. Faites-vous une quine pour le grand bien ! - 62 octets (-12)

#"[>][o>]<-o;<[<]>[o>]#"[>][o>]<-o;<[<]>[o>]

Ajout d'une fonctionnalité de langue

  • "...": Littéral de chaîne de caractères.
    • Pile / Deque : Pousser les codepoints de Bugle de chaque char au sommet / devant de la pile / déque.
    • Bande / Grille : Ecrit les points de code du Bugle de chaque char sur la bande / grille à droite, en commençant par la cellule actuelle. Ne déplace pas le curseur.
    • n est traité comme les autres caractères.
    • Il n'y a pas de caractère échappé pour le moment, donc vous ne pouvez pas écrire. " (34) dans la mémoire en utilisant cette commande. Ce n'est pas un trop gros problème, du moins pour l'instant, puisque tous les défis de kolmogorov-complexité énumérés ici n'ont pas. " dans la sortie.

Tout autre golf est toujours le bienvenu, en particulier pour "Never gonna give you up" et la quine. Plus précisément, la quine ci-dessus est très première quine non triviale que j'ai jamais fait, donc je crois fortement que quelqu'un peut venir avec un plus court.

3. Score : 29382583 2532 (-51)

Le nouvel interprète est ici.

Principalement pour les besoins du golf de la quine et pour faciliter la sortie, j'ai ajouté la possibilité de dupliquer la pile/deque et aussi de sortir le modèle entier sous forme de texte rendu au lieu d'entiers.

Solutions

1. "Hello, World !" - 17 octets (-3)

#"Hello, World!"a

5. Chantez Bon Anniversaire à votre langage de programmation préféré - 95 octets (-3)

#"Happy Birthday to You
Happy Birthday to You
Happy Birthday Dear Bugle
Happy Birthday to You"a

6. Nous ne sommes pas étrangers au golf de code, vous connaissez les règles, et moi aussi - 1884 octets (-3).

#"We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

We've known each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it
And if you ask me how I'm feeling
Don't tell me you're too blind to see

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

(Ooh, give you up)
(Ooh, give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)
(Ooh)
Never gonna give, never gonna give
(Give you up)

We've know each other for so long
Your heart's been aching but
You're too shy to say it
Inside we both know what's been going on
We know the game and we're gonna play it

I just wanna tell you how I'm feeling
Gotta make you understand

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you

Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you"a

16. Faites cuire une tranche de Pi - 149 octets (-3)

#"()()()()()()
|3.1415926|
|:53589793|
::2384626|
 ::433832|
  ::79502|
   ::8841|
    ::971|
     ::69|
      ::3|
       __|"a

20. Golf vous une quine pour le grand bien ! - 23 octets (-39)

$"R34RdR36Ra"R34RdR36Ra

Caractéristiques de la langue ajoutée

  • a

    • Tous : imprimez le modèle entier en tant que texte, par ex. #"Hello, World!"a imprime Hello, World!
  • d

    • Stack/Deque : Pousse la pile sur elle-même.

1. Score : 9638

L'interpréteur de base peut être trouvé ici, et les soumissions ici. C'est assez long, donc je l'ai inclus sur GitHub, plutôt que de prendre la majeure partie du post.

Solutions

Toutes ces solutions sont les programmes Unicode, exécutés avec la commande -u mais les scores sont comptés comme s'ils étaient encodés avec la page de code de Bugle.

1. "Hello, World !" - 48 octets

$72o101o108o108o111o44o32o87o111o114o108o100o33o

Il suffit de pousser puis de sortir le code de caractère de chaque caractère de la chaîne.

2. 1, 2, Fizz, 4, Buzz - 1396 octets

$49o10o50o10o70o105o122o122o10o52o10o66o117o122o122o10o70o105o122o122o10o55o10o56o10o70o105o122o122o10o66o117o122o122o10o49o49o10o70o105o122o122o10o49o51o10o49o52o10o70o105o122o122o66o117o122o122o10o49o54o10o49o55o10o70o105o122o122o10o49o57o10o66o117o122o122o10o70o105o122o122o10o50o50o10o50o51o10o70o105o122o122o10o66o117o122o122o10o50o54o10o70o105o122o122o10o50o56o10o50o57o10o70o105o122o122o66o117o122o122o10o51o49o10o51o50o10o70o105o122o122o10o51o52o10o66o117o122o122o10o70o105o122o122o10o51o55o10o51o56o10o70o105o122o122o10o66o117o122o122o10o52o49o10o70o105o122o122o10o52o51o10o52o52o10o70o105o122o122o66o117o122o122o10o52o54o10o52o55o10o70o105o122o122o10o52o57o10o66o117o122o122o10o70o105o122o122o10o53o50o10o53o51o10o70o105o122o122o10o66o117o122o122o10o53o54o10o70o105o122o122o10o53o56o10o53o57o10o70o105o122o122o66o117o122o122o10o54o49o10o54o50o10o70o105o122o122o10o54o52o10o66o117o122o122o10o70o105o122o122o10o54o55o10o54o56o10o70o105o122o122o10o66o117o122o122o10o55o49o10o70o105o122o122o10o55o51o10o55o52o10o70o105o122o122o66o117o122o122o10o55o54o10o55o55o10o70o105o122o122o10o55o57o10o66o117o122o122o10o70o105o122o122o10o56o50o10o56o51o10o70o105o122o122o10o66o117o122o122o10o56o54o10o70o105o122o122o10o56o56o10o56o57o10o70o105o122o122o66o117o122o122o10o57o49o10o57o50o10o70o105o122o122o10o57o52o10o66o117o122o122o10o70o105o122o122o10o57o55o10o57o56o10o70o105o122o122o10o66o117o122o122o

Même technique que l'exemple Hello, World !

3. Produisez le nombre 2014 sans aucun chiffre dans votre code source - 13 octets.

#++O--O+O+++O

# utilise la bande, + incrémente la cellule, O sort sous forme d'un nombre entier et - décrémente

4. Hello World obfusqué - 172 octets

#+++++++++[>++++++++<-]>o<++++[>+++++++<-]>+o+++++++oo+++o>++++[>+++++++++++<-]>o------------o[-]++++++++[>+++++++++++<-]>-o<<+++++++++++<-]>o

Utilise sa similarité inhérente au brainfuck. Répond aux règles #1 et #3

5. Chantez un joyeux anniversaire à votre langage de programmation préféré - 328 octets.

$72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o68o101o97o114o32o66o117o103o108o101o10o72o97o112o112o121o32o66o105o114o116o104o100o97o121o32o116o111o32o89o111o117o

Tous les défis de kolmogorov-complexité ont ce type de structure, pour le moment.

6. Nous ne sommes pas étrangers au golf de code, vous connaissez les règles, et moi aussi - 6893 octets.

$87o101o39o114o101o32o110o111o32o115o116o114o97o110o103o101o114o115o32o116o111o32o108o111o118o101o10o89o111o117o32o107o110o111o119o32o116o104o101o32o114o117o108o101o115o32o97o110o100o32o115o111o32o100o111o32o73o10o65o32o102o117o108o108o32o99o111o109o109o105o116o109o101o110o116o39o115o32o119o104o97o116o32o73o39o109o32o116o104o105o110o107o105o110o103o32o111o102o10o89o111o117o32o119o111o117o108o100o110o39o116o32o103o101o116o32o116o104o105o115o32o102o114o111o109o32o97o110o121o32o111o116o104o101o114o32o103o117o121o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o87o101o39o118o101o32o107o110o111o119o110o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o65o110o100o32o105o102o32o121o111o117o32o97o115o107o32o109o101o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o68o111o110o39o116o32o116o101o108o108o32o109o101o32o121o111o117o39o114o101o32o116o111o111o32o98o108o105o110o100o32o116o111o32o115o101o101o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o44o32o103o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o40o79o111o104o41o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o44o32o110o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o10o40o71o105o118o101o32o121o111o117o32o117o112o41o10o32o10o87o101o39o118o101o32o107o110o111o119o32o101o97o99o104o32o111o116o104o101o114o32o102o111o114o32o115o111o32o108o111o110o103o10o89o111o117o114o32o104o101o97o114o116o39o115o32o98o101o101o110o32o97o99o104o105o110o103o32o98o117o116o10o89o111o117o39o114o101o32o116o111o111o32o115o104o121o32o116o111o32o115o97o121o32o105o116o10o73o110o115o105o100o101o32o119o101o32o98o111o116o104o32o107o110o111o119o32o119o104o97o116o39o115o32o98o101o101o110o32o103o111o105o110o103o32o111o110o10o87o101o32o107o110o111o119o32o116o104o101o32o103o97o109o101o32o97o110o100o32o119o101o39o114o101o32o103o111o110o110o97o32o112o108o97o121o32o105o116o10o32o10o73o32o106o117o115o116o32o119o97o110o110o97o32o116o101o108o108o32o121o111o117o32o104o111o119o32o73o39o109o32o102o101o101o108o105o110o103o10o71o111o116o116o97o32o109o97o107o101o32o121o111o117o32o117o110o100o101o114o115o116o97o110o100o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o10o32o10o78o101o118o101o114o32o103o111o110o110o97o32o103o105o118o101o32o121o111o117o32o117o112o10o78o101o118o101o114o32o103o111o110o110o97o32o108o101o116o32o121o111o117o32o100o111o119o110o10o78o101o118o101o114o32o103o111o110o110o97o32o114o117o110o32o97o114o111o117o110o100o32o97o110o100o32o100o101o115o101o114o116o32o121o111o117o10o78o101o118o101o114o32o103o111o110o110o97o32o109o97o107o101o32o121o111o117o32o99o114o121o10o78o101o118o101o114o32o103o111o110o110o97o32o115o97o121o32o103o111o111o100o98o121o101o10o78o101o118o101o114o32o103o111o110o110o97o32o116o101o108o108o32o97o32o108o105o101o32o97o110o100o32o104o117o114o116o32o121o111o117o

7. Sortie du signe - 18 octets

$?:Zs0=0s-s:1s-++O

Vérifie si l'entrée est supérieure à zéro, inférieure à zéro (changé pour donner le rendement. -1 au lieu de 1) et égale à zéro, avant de prendre leur somme.

8. Conjecture de Collatz (OEIS A006577) - 36 octets

#$?:1-[:2s%{3×1+}2s÷]:1s-₀+₁]₀O

Ceci effectue le bouclage sur la pile, mais bascule sur la bande pour incrémenter le compte à chaque itération.

9. An Array of Challenges #1 : Alternating Arrays - 35 octets

#?>?>+>?[[<+<<->>>-]+<[-<<]>[>]?]

C'est une légère modification de la réponse de Mitch Schwartz au défi existant, allez upvotez ça !

10. Suis-je un tableau insignifiant ? - 46 octets

$1 0-?…1[s:sr-:Z1s-2×1+×1s-Z1-L2s-×]1+Z1-O

Tout le mérite revient à Emigna pour la réalisation de ce tableau.

11. Ce nombre est-il un nombre premier ? - 31 octets

$?:1s-:[:1s-:];L1s[×L2s-]:×%O

Utilise le théorème de Wilson et calcule (n-1)!² % n

12. Je suis un palindrome. L'es-tu ? - 13 octets

$?:R=:O:=R:?$

La première moitié du programme, jusqu'à Odéfinit la pile comme [x, x]x est soit True soit False. O extrait la valeur supérieure et la sort. Le reste du programme s'assure simplement qu'aucune erreur n'est produite. Heureusement, lorsque ? rencontre la fin du fichier, il pousse juste '' (la chaîne vide).

13. Somme des nombres sur le standard en - 19 octets.

$?:[?:];L0s[+L1s-]O

Ceci peut être divisé en deux parties : ?:[?:]; et L0s[+L1s-]. La première partie recueille tous les éléments entrés dans la pile. La seconde partie pousse la somme des deux premiers éléments, tant que la longueur est supérieure à 1.

14. Trouver le factoriel - 25 octets

$?:[:1s-:];L1s-Z[×L1s-]O

Ce programme a une structure similaire à celle du programme de la somme, mais au lieu de pousser des entrées ltiples, le programme de la somme est un programme de la somme. [:1s-:]; pousse l'intervalle de 1 .. n sur la pile, et [×L1s-] prend le produit.

15. Le code le plus court pour produire une sortie infinie - 5 octets.

#+[O]

Utilisez une boucle while, avec le 1 continuellement sous le pointeur. Sorties 1 pour toujours.

16. Cuire une tranche de Pi - 439 octets

$40o41o40o41o40o41o40o41o40o41o40o41o10o124o92o51o46o49o52o49o53o57o50o54o124o10o124o58o92o53o51o53o56o57o55o57o51o124o10o92o58o58o92o50o51o56o52o54o50o54o124o10o32o92o58o58o92o52o51o51o56o51o50o124o10o32o32o92o58o58o92o55o57o53o48o50o124o10o32o32o32o92o58o58o92o56o56o52o49o124o10o32o32o32o32o92o58o58o92o57o55o49o124o10o32o32o32o32o32o92o58o58o92o54o57o124o10o32o32o32o32o32o32o92o58o58o92o51o124o10o32o32o32o32o32o32o32o92o95o95o92o124o

17. Trouvez le plus petit nombre qui ne divise pas N.

$?:1:[:rs%0=s1+srr:Rs]1s-O

Ceci utilise la division d'essai, se terminant lorsque le résultat du modulo n'est pas égal à 0.

18. Est-ce un nombre pair ou impair ? - 5 octets

$2?%O

Modulo simple par 2

19. Sortie avec la même longueur que le code - 16 octets

$16:[32+:o33s-:]

Sort les 16 premiers caractères ASCII imprimables en sens inverse : 0/.-,+*)('&%$#"!

20. Golf vous une quine pour le grand bien !

$1[93, 76, 111, 91, 49, 59, 104, 48, 79, 49, 111, 54, 51, 0]
36o1O0h;1[oL]

Le crédit va à l'utilisateur202729 pour avoir fait cela.


Spécification de la langue

Appeler

bugle.py prend actuellement une série de drapeaux, puis le nom du fichier / code à exécuter. Pour l'instant, il a 4 drapeaux de ligne de commande :

  • -f/--file spécifie que le code doit être lu à partir d'un fichier
  • -c/--cmd/--cmdline spécifie que le code est fourni via la ligne de commande.

    -c et -f ne peuvent pas être utilisés dans le même appel

  • -u/--unicode indique à l'interpréteur de lire le code avec l'encodage Unicode. Le défaut est d'utiliser l'encodage de Bugle ci-dessous.

  • -l/--length sort la longueur du fichier, en octets, vers STDERR après exécution.

L'appel suivant a été utilisé pour tester les soumissions ci-dessus.

$ python bugle.py -f -u [file]

Page de code

Bugle utilise 512 caractères dans sa page de code. Le site 0xFF ne doit pas être utilisé pour une commande. car il est utilisé pour indiquer que la valeur hexagonale suivante doit être indexée dans la seconde moitié de la page de code. Les caractères utilisés sont :

ÀÁÂÄÆÃÅĀĄtnĆČÇĎÐ
ÈÉÊËĒĖĚĘÌÍÎÏĪĮĹĽ
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[]^_
`abcdefghijklmno
pqrstuvwxyz{|}~¶
ŁŃŇÑŊÒÓÔÖŒÕØŌŔŘŚ
ŠŤŦÙÚÛÜŮŪŴÝŶŸŹŽŻ
àáâäæãåāąćčçďðèé
êëēėěęìíîïīįĺľłń
ňñŋòóôöœøōõŕřßśš
ťŧùúûüůūŵýŷÿźžż◊
ΑΆΒΓΔΕΈΖΗΉΘΙΊΚΛΜ
ΝΞΟΌΠΡΣΤΥΎΦΧΨΩΏ
αάβγδεέζηήθιίΐκλ
μνξοόπσςτυύΰφχψω
ώǴḰḾṔẂǵḱḿṕẃḂḞĠḢṀ
ȮṖṠṪẊḃḟġḣṁȯṗṡṫẋ§
ĂĞĬŎŬĴăğĭŏŭĵªº‹›
ƁƇƊƑƓƘⱮƝƤƬƲȤɓƈɗƒ
ɠɦƙɱɲƥʠɼʂƭʋȥ©®ıȷ
ЉЊЕРТЗУИОПШАСДФГ
ХЈКЛЧЋЅЏЦВБНМЂЖљ
њертзуиопшасдфгх
јклчћѕџцвбнмђжÞþ
†∂∆≈≠√∈∉∌∋∩∪¬∧∨⊕
¤₽¥£¢€₩‰¿¡⁇⁈‼⁉‽⸘
…°•”“„’‘≤«·»≥ᴇ∞¦
×⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾
÷₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎

Ou voyez-le sous forme de tableau. Notez que t et n représentent respectivement une tabulation et un saut de ligne. Notez également que la 16e ligne se termine par un caractère non imprimable : , et peut ne pas s'afficher sur tous les navigateurs.

Mémoire

L'interpréteur a actuellement 5 modèles de mémoire intégrés à lui. Chaque modèle de mémoire nécessite un caractère pour indiquer à l'interprète de commencer à utiliser ce modèle :

  • Pile ($) : une pile standard, qui supporte les valeurs poussées, poppées, etc.
  • Bande infinie (#) : Une bande, à la brainfuck, qui n'est initialement que... 0s.
  • Grille infinie (G) : Une grille 2d, infinie dans les deux sens, contenant uniquement des. 0s
  • Deque (D) : Un deque, tel qu'implémenté par le collections module.
  • Registre (S) : Une valeur unique, qui peut être utilisée pour stocker. un valeur.

La grille a également une seule valeur enregistrée dans son pointeur qui peut être écrit, ou écrire dans les cellules.

En outre, les tailles de bande et de grille et le comportement d'enveloppement peuvent être modifiés, en utilisant une commande d'invocation différente. Ces différentes commandes prennent un nombre donné de valeurs du modèle de mémoire actuel comme paramètres de personnalisation :

  • Bande (À) : Prend deux valeurs - taille (int) et l'enveloppement (bool)
  • Bande (Á) : Prend une valeur - taille (int). S'enroule à la fin de la bande
  • Bande (Â) : Prend une valeur - taille (int). Ne s'enroule pas à la fin
  • Grille (Ǵ) : Prend 4 valeurs - taille x (int), taille en y (int), x wrap (bool) et y wrap (bool)

Le type de mémoire utilisé peut changer au cours d'un programme par l'utilisation de la fonction ₀₁₂₃₄₅₆₇₈₉qui accèdent à l'indexation 0 ne type de mémoire utilisé ( est le premier, est le deuxième, etc.), mais, actuellement, les valeurs ne peuvent pas être échangées entre différents types de mémoire.

Branchement

Jusqu'à présent, Bugle a deux commandes de branchement, toutes deux terminées par une commande ] caractère :

  • While ([) : boucles while de type "brainfuck". Celles-ci pop une valeur de la pile/déque si elle est utilisée, ou accèdent à la cellule sous le pointeur en bande/grille.

    Exemple : #?[-O] compte depuis l'entrée jusqu'à 0

  • Si/seulement ({ et }). Boucles while à exécution unique. Si la valeur poppée est fausse, alors la clause if est sautée, passant à la clause else, séparée par... }. Ils se comportent de la même manière que les boucles while en ce qui concerne l'accès à la mémoire.

    Exemple : {0}1] est une porte logique NOT

Fonctions intégrées

Les suites de chiffres sont interprétées comme des entiers, et sont juste poussées/écrites telles quelles dans le modèle de mémoire actuel.

Évidemment, j'ai équipé Bugle de quelques fonctions construites de base, aussi peu que possible, pour permettre à d'autres d'en ajouter au fur et à mesure que la chaîne progresse. Les commandes de base sont les suivantes :

  • +

    • Stack/Deque : Ajouter les deux valeurs supérieures.
    • Bande/Grille : Incrémenter la cellule courante
  • -

    • Pile/Deque : Soustraire les deux valeurs supérieures
    • Bande/Grille : Décrémenter la cellule courante.
  • %

    • Pile/Deque : Modulo les deux valeurs supérieures
  • :

    • Pile/Deque : Dupliquer la valeur supérieure
  • ;

    • Pile/Deque : Pop la valeur supérieure
    • Bande/Grille : Mettre à zéro la cellule courante
  • <

    • Bande/grille : Déplacement vers la gauche d'une cellule
  • =

    • Pile : Les deux valeurs supérieures sont-elles égales ?
    • Grille : Déplacement vers le bas d'une cellule.
  • >

    • Bande/grille : Déplacement vers la droite d'une cellule
  • ?

    • Pile/Deque : Evaluer une ligne d'entrée
    • Tape/Grid : Prendre un caractère d'entrée
  • L

    • Pile/Deque : Pousser la longueur de la pile/de la déque.
  • O

    • All : Sortir la valeur actuelle
  • R

    • Stack : Inverser l'élément supérieur si possible, sinon inverser la pile.
  • Z

    • Pile : L'élément supérieur est positif ?
  • ^

    • Grille : Remonter d'une cellule
  • h

    • Tout : imprimer le modèle de mémoire complet
  • o

    • Tous : imprimer la valeur actuelle sous forme de caractère.
  • r

    • Pile : Faire tourner les 3 premières valeurs
    • Deque : Rotation du deque n fois, où n est la valeur supérieure
  • s

    • Pile/Deque : Echanger les deux valeurs supérieures
    • Pile : Echanger la valeur supérieure
  • ×

    • Pile : Multiplier les deux valeurs supérieures
    • Grille : Écrire la valeur du pointeur dans la cellule courante
  • ÷

    • Pile : Diviser les deux valeurs supérieures
    • Grille : Écrire la cellule actuelle sur la valeur du pointeur.

Avis et notes

N'oubliez pas de donner de la visibilité à cet avis si vous avez réussi.



Utilisez notre moteur de recherche

Ricerca
Generic filters

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.