J'ai un problème pour un cyber club qui vous demande d'imprimer:
ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
Utilisation de Brainf ** k en 29 octets ou moins sans utiliser le caractère «,».
J'ai un code de travail:
++++++++++[>++++++>+++++++++<<-]>-->.<[>-.<-]
Cependant ma boucle est trop longue, m'envoyant 16 octets au-dessus de la limite.
Existe-t-il un moyen plus efficace de définir la deuxième et la troisième cellule sur 58 et 90 pour que je puisse exécuter ma deuxième boucle? Ou existe-t-il une meilleure façon de faire tout cela ensemble que je ne vois tout simplement pas?
-.
en.-
supprimant le>.<
.+[--->++<]>++++[.-]
pour 19 octets mais ilRéponses:
2724 octetsJ'ai passé une journée entière à écrire un forceur de brut et à regarder les résultats arriver. Maintenant, je peux recommencer à faire du vrai travail ...Un autre jour de forçage brutal plus tard ...Essayez-le en ligne!
Le composant
++[<++[++<]>>>+]
initialise la bande àqui est tout simplement parfait pour ce dont nous avons besoin!
la source
+[[>++<<]>->+>+]<[-<-.>]
30 octets
Essayez-le en ligne!
85 et 171 sont assez faciles à générer en brainfuck (inverses modulaires de 3 et -3 ). 85 est assez proche de 90 et 171 est assez proche de 177 ( 59 · 3 ), qui est utilisé ici. Avec un peu de piratage, je peux produire à la place 88 et 176 .
Encore un octet de moins que la cible.
Autres suggestions
En général, il est plus court d'itérer sur une liste, multipliant par une constante, plutôt que dans l'autre sens. Cela est particulièrement vrai pour 3 valeurs ou plus. Par exemple, ceci:
peut s'écrire:
Il n'y avait que deux valeurs intérieures, donc ce n'est pas vraiment une amélioration dans ce cas. En fait, le simple refactoring est un octet plus court:
Multipliant 30 par 2 et 3 , plutôt que 10 par 6 et 9 . Avec la suggestion de Martin Büttner, cela est déjà descendu à 38 octets, sans grand changement par rapport à l'original:
la source
34 octets
Vous avez enregistré 11 octets, mais encore 5 octets trop longtemps ...
J'ai déjà passé des heures, j'espère que quelqu'un pourra s'améliorer.
la source