Faire un RNG perdu

17

Lost est un langage de programmation 2D où la position de départ et la direction de l'ip sont entièrement aléatoires.

Il est donc très difficile de créer des programmes Lost déterministes. Mais aujourd'hui nous n'écrivons pas un programme déterministe, nous écrivons un RNG.

Écrivez un programme perdu qui ne prend aucune entrée et génère un seul chiffre (0,1,2,3,4,5,6,7,8 ou 9), tous les chiffres ayant une probabilité égale d'être sortis. Étant donné que l'emplacement et la direction de départ de Lost sont la seule source d'aléatoire, la seule façon de le faire est de faire en sorte que chaque emplacement de votre source génère un nombre différent de 0 à 9, un nombre égal produisant chaque chiffre.

Vous pouvez calculer la probabilité de chaque chiffre en utilisant l' -Qindicateur et en le canalisant dans ce script python

import sys
a=sys.stdin.read().split()[:-1]
for x in range(10):print x,':',a.count(`x`)
print[x for x in a if x not in list("1234567890")]

Essayez-le en ligne!

Il s'agit de donc les réponses seront notées en octets avec moins d'octets étant meilleurs.


Un aperçu de Lost

Lost est un langage IO 2D implicite enveloppant qui s'inspire beaucoup du moule de Klein. Voici un petit résumé de ce que font les commandes perdues

  • \, /, |Miroirs l'IP

  • <, ^, >, vPoints l'IP dans une direction

  • [Reflète l'ip s'il se déplace vers l'est; devient ]si l'ip se déplace horizontalement

  • ]Reflète l'ip s'il se déplace vers l'ouest; devient [si l'ip se déplace horizontalement

  • ! Ignore la prochaine opération

  • ? Saute en haut de la pile et saute sinon zéro

  • : Duplique le haut de la pile

  • $ Échange les deux premiers éléments de la pile

  • ( Sort de la pile et pousse vers la portée

  • ) Sort de la portée et pousse vers la pile

  • 0- 9pousse n vers le haut de la pile

  • "Démarre et termine un littéral de chaîne. Au cours d'une chaîne, les commandes littérales ne sont pas exécutées et à la place, leurs valeurs de caractères sont poussées vers la pile.

  • + Ajoute les deux premiers chiffres

  • * Multiplie les deux premiers chiffres

  • - Multiplie le sommet par -1

  • % Désactive la sécurité

  • # Active la sécurité

  • @ Arrête l'exécution si la sécurité est désactivée (démarre)

Post Rock Garf Hunter
la source
Que se passe-t-il si vous essayez d'échanger deux valeurs de la pile mais qu'il n'y a qu'une seule valeur ou si vous essayez de sortir d'une pile vide?
pppery
@ppperry La pile est remplie de zéros implicites.
Post Rock Garf Hunter
1
Informations trop faibles sur la langue. Est-ce que ça enveloppe? Que signifie «sécurité»? La description des bracelets est trompeuse? Comment la portée est-elle utilisée?
Dead Possum
@DeadPossum J'ai essayé de rester concis. Ça enveloppe. La sécurité est déjà expliquée dans la question. Je ne sais pas ce que vous voulez dire sur les crochets. []agir comme des portes, <>pointer dans des directions et ()stocker et rappeler de la portée. La portée est utilisée pour stocker des valeurs.
Post Rock Garf Hunter
@WheatWizard La sécurité n'est-elle donc qu'une condition @ou at-elle d'autres cas d'utilisation? A propos de parenthèses, je ne comprends pas cette partie: becomes ] if the ip is moving horizontally. Se déplacer vers l'est aussi horizontalement, n'est-ce pas?
Dead Possum

Réponses:

12

81 101 octets

Cela pourrait être golfable plus loin ...

>%(0@>%(1@>%(2@>%(3@>%(4@>%(5@>%(6@>%(7@>%(8@>%(9@
^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<^<<<<

Essayez-le en ligne!

pppery
la source
1
Approche intéressante! Je n'y avais pas pensé
Post Rock Garf Hunter
1
101 octets qui corrige la double impression. Il suffit d'ajouter un pop de pile avant que la sécurité ne soit désactivée, donc si vous frappez le numéro au début, il peut le faire sauter, le pousser à nouveau, puis mourir. Je ne sais pas si c'est toujours techniquement un aléatoire uniforme ...
Arnold Palmer
1
J'ai littéralement eu la même idée en même temps ...
pppery
1
Votre sortie n'est pas uniforme. 0a une chance de 7/101 d'être imprimé (n'importe lequel <ou ^sous son bloc, plus le symbole >et %), 1- 8a une chance de 10/101 et 9a une chance de 11/101. Ensuite, il semble qu'il pourrait y avoir une chance que cela continue pour toujours.
Arnold Palmer
1
Il doit envelopper, sinon cela se terminerait quand il commencera sur la ligne supérieure en remontant.
pppery
9

Perdu , 54 octets

>%(0@>%(1@
@>%(2@>%(3
5@>%(4@>%(
(7@>%(6@>%
%(9@>%(8@>

Essayez-le en ligne!

Je viens de copier la réponse de pppery et de faire des trucs au hasard. Je ne connais rien à la langue perdue. Et je ne sais même pas ce qui se passe pour les codes ci-dessus. C'est du travail? (Je ne sais pas)

tsh
la source
Votre code produit deux fois moins de sortie que Ppperry, je suppose que c'est à cause de son -Qfonctionnement? La sortie semble de toute façon normalement distribuée. Il aurait été bien d'avoir une spécification complète de la langue liée dans la question.
Aaron
@Aaron J'aurais dû expliquer comment ça -Qmarche. La langue étant aléatoire, la vérification se fait en exécutant toutes les possibilités. -Qfait cela et imprime tous les résultats. Plus le programme est court, moins il y a de possibilités et moins il y a de sorties -Q.
Post Rock Garf Hunter