Joe est votre développeur BF moyen. Il est sur le point de vérifier ses modifications de code dans leur référentiel lorsqu'il reçoit un appel de son patron. "Joe! La machine du nouveau client est cassée! L'interpréteur brainfuck définit toutes les cellules sur des valeurs aléatoires avant l'exécution du programme. Pas le temps de le réparer, votre code devra y faire face." Joe n'y pense pas beaucoup et est sur le point d'écrire un programme pour remettre à zéro le premier million de cellules, quand son patron l'interrompt à nouveau - "... et ne pense pas à utiliser la force brute, le code doit être aussi petit que possible. " Maintenant, vous devez aider le pauvre Joe!
Caractéristiques
- Vous obtiendrez un code de brainfuck valide en entrée
- Votre programme va alors modifier le code pour qu'il fonctionne sur un interpréteur randomfuck randomisé
- Cela signifie qu'avant l'exécution du programme, les cellules peuvent être définies sur n'importe quelle valeur.
- Le nouveau programme doit avoir exactement le même comportement quelles que soient les conditions initiales.
- L'interpréteur aura une valeur de cellule maximale de 255 avec habillage et une bande de longueur infinie.
Notation
Votre score est 10 fois la taille du compilateur en octets plus la somme des tailles de cas de test . Le score le plus bas l'emporte évidemment.Pour atténuer l'optimisation des cas de test, je me réserve le droit de changer les cas de test si je soupçonne quelque chose, et je le ferai probablement avant de choisir un gagnant.
Cas de test
(Je les ai obtenues sur la page esolangs et sur cette page Web: http://www.hevanet.com/cristofd/brainfuck/ ). Merci également à @Sparr pour le dernier cas de test.
- Bonjour le monde:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
- Entrée inversée:
>,[>,]<[.<]
- Pouvoirs de deux (flux infini):
>++++++++++>>+<+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<]>.>[->[ <++>-[<++>-[<++>-[<++>-[<-------->>[-]++<-[<++>-]]]]]]<[>+<-]+>>]<<]
- Carrés de moins de 10000:
++++[>+++++<-]>[<+++++>-]+<+[>[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+>>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<]<<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<-]
- Flux de Fibonacci:
>++++++++++>+>+[[+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[[-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>]<<<]
- Séquence ASCII jusqu'à l'entrée:
,[.[>+<-]>-]
(celle-ci nécessite un nombre de cellules variable en fonction de l'entrée)
Réponses:
sed, compilateur de 46 octets
Je n'ai pas remarqué que la sortie était également censée être du golf avant d'avoir écrit le programme, donc je vais opter pour le court compilateur. De plus, c'était beaucoup trop de travail à tester, alors s'il vous plaît, informez-le s'il ne fonctionne pas correctement :)
la source
C ++
Taille du compilateur: 630 octets (-10 octets grâce à Zacharý) Taille
du résultat de la compilation Hello World: 139
Carré sous 10000: 319
Compilateur:
L'interprète randomfuck randomisé:
Quelques notes :
la source
pii
enP
, en changeant la définition deR
enm[p<0?p%30000+30000:p]
et en modifiant tous les appels / références en conséquence. Il a également modifié les cas de test. Je n'ai pas vérifié cela, mais cela pourrait économiser quelques octets pour définir quelque chose30000
, car vous l'utilisez si souvent.R
pourm[p<0?p%S+S:p]
travailler?R
devrait économiser quelques octets.rs , 33 octets, score: 2659
Surtout juste un simple portage de la
sed
réponse.la source