Ecrivez un programme qui produit une sortie telle que:
- Au moins trois caractères distincts apparaissent.
- Le nombre d'occurrences de chaque caractère est un multiple de 3.
Par exemple, A TEA AT TEE
une sortie valide étant donné que chacun des 4 caractères distincts, A
, E
, T
et (space)
, se produit 3 fois.
Bien sûr, un défi sur le nombre 3 doit avoir une troisième exigence. Alors:
- Le programme lui-même doit également respecter les deux premières exigences. (Cela signifie que votre programme aura au moins 9 octets de long.)
Vous devez écrire un programme complet, pas une fonction. Assurez-vous de montrer la sortie de votre programme dans votre réponse.
Aussi, pour garder les choses intéressantes, vous êtes fortement encouragés:
- ne pas utiliser les commentaires pour répondre à l'exigence 3 si vous pouvez y contribuer
- pour produire une sortie qui n'est pas juste une chaîne répétée 3 fois
- pour que le résultat soit différent du programme lui-même (pour les langues qui peuvent générer automatiquement le contenu de son propre programme, vous pouvez contribuer à ce wiki de communauté ).
C'est du code-golf . Le code le plus court en octets gagne.
code-golf
restricted-source
Darrylyeo
la source
la source
123123123
cela fonctionnera, tel qu'il est écrit actuellement.)abcabcabc
avec un retour à la ligne?Réponses:
Brain-Flak , Flakcats , cerveau-Flueue , cerveau-Flak classique , Miniflak et Fλak 18 octets
Prouvé optimal!
Essayez-le en ligne!
Explication
Flak cérébrale, Cervelle flueue, Miniflak et Fλak
Cela imprime:
(Il y a un retour à la ligne)
Cerveau-Flak Classic
Brain-Flak Classic est la version originale de Brain-Flak et présente quelques différences importantes par rapport à Brain-Flak moderne. Dans BFC
[...]
imprime son contenu plutôt que de le nier.A la fin de l'exécution, le contenu de la pile (
3 3 3
) est imprimé.Cela imprime:
(Il y a un retour à la ligne)
Flakcats
Flakcats est assez différent des 4 autres flaks et je suis surpris que cela fonctionne dans Flakcats. Les trois opérateurs ici sont presque les mêmes que ceux utilisés par Brain-Flak.
La principale différence dans ce programme particulier entre Flakcats est l’
(...)
opérateur qui, dans Flakcats, est équivalent à([{}]...)
Brain-Flak. Cependant, cela ne fait aucune différence pour nous, car il enregistre des zéros et fonctionne donc de la même manière que Brain-Flak.Voici ce programme compilé dans Brian-Flak:
Cela imprime:
(Il y a un retour à la ligne)
Preuve d'optimalité dans Brain-Flak et Miniflak
Ce n'est pas une preuve formelle, mais plutôt une preuve informelle qui devrait être élargie pour devenir plus rigoureuse.
En raison des restrictions, les programmes Brain-Flak doivent être une chaîne équilibrée et la longueur du programme doit être un multiple de 3, toute soumission valide doit être un multiple de 6. Cela signifie que toute solution inférieure à 18 doit avoir une longueur de 12.
En raison des sorties à la fin de la nouvelle ligne, la hauteur finale de la pile doit être un multiple de trois, sinon nous briserons les restrictions en matière de sortie.
Toute soumission valide de longueur 12 doit comporter 2 types d'accolades (en avoir moins enfreindrait les restrictions relatives au nombre de caractères distincts et plus signifierait plus de 12 caractères). Puisque le programme produit une sortie, il doit avoir un push.
Cela nous laisse choisir notre autre paire d'accolades. Les options sont:
<...>/<>
Cela échoue parce que nous devons générer une "valeur" afin de créer un nombre autre que zéro, nous devons renoncer à un
()
pour créer un nombre qui rend impossible de pousser plus de deux fois.[...]/[]
Cela échoue pour la même raison que le dernier a échoué. Les accolades carrées sont vraiment mauvaises à faire de la valeur. La
[]
monade peut créer de la valeur, mais nous devons commencer par les chiffres, puis nous n'avons plus assez de parens pour pousser trois fois.{...}/{}
Celui-ci est prometteur, nous pourrions créer une boucle et en utiliser une
()
pour appuyer plusieurs fois, mais ce n'est hélas pas possible.Pour que la boucle se termine, il doit y avoir un zéro sur la pile à un moment donné et pour que nous ayons la sortie correcte, nous devons avoir autre chose que zéro sur la pile à la fin du programme. Puisque nous n’avons ni
[]
ni<>
le zéro à la fin de la boucle, il faut un zéro implicite du bas de la pile. Cela signifie que la boucle ne peut pas ajouter de nouveaux nombres à la pile, ce qui la rend inutile.Comme aucun des choix d'accolade ne peut créer un programme de longueur 12, aucun ne peut exister.
Puisque Miniflak est un sous-ensemble de Brain-Flak, tout programme Miniflak plus court serait également un programme Brain-Flak plus court et n’existe donc pas.
Preuve d'optimalité dans Brain-Flueue
Brain-Flueue est un langage de plaisanterie basé sur Brain-Flak. Les deux sont si semblables que leurs interprètes sont identiques partout sauf deux lignes. Comme leur nom l'indique, Brain-Flueue stocke ses données dans des files d'attente, tandis que Brain-Flak stocke ses données dans des piles.
Pour commencer, nous avons les mêmes restrictions sur la taille du programme créées par Brain-Flak. Nous cherchons donc un programme de taille 12. En outre, nous aurons besoin d'un
(...)
pour créer toute sortie et une autre paire. les paires<>
et[]
ne fonctionnent pas dans Brain-Flueue pour la même raison, elles ne fonctionnent pas dans Brain-Flak.Nous savons maintenant que notre programme doit être composé de caractères
((())){{{}}}
.En utilisant les mêmes méthodes que celles utilisées dans la preuve précédente, nous pouvons démontrer qu'il doit y avoir une boucle dans le programme final.
À présent, les preuves diffèrent, car Brain-Flueue opère sur des files d'attente plutôt que sur des piles, le programme peut quitter une boucle avec des valeurs dans la file d'attente.
Pour sortir de la boucle, nous aurons besoin d'un zéro dans la file d'attente (ou d'une file vide, mais si la file est vide, nous rencontrons le même problème que Brain-Flak). Cela signifie que nous devrons ouvrir notre programme avec
({})
pour créer le zéro. Nous aurons besoin d'un appui dans la boucle pour insérer le nombre d'éléments requis dans la file d'attente. Nous devrons également indiquer un nombre différent de zéro avant la boucle pour pouvoir y entrer. cela nous coûtera au minimum absolu(())
. Nous avons maintenant utilisé plus de parens que nous avons.Ainsi, il n'y a pas de programme Brain-Flueue pour effectuer la tâche qui est de 12 octets, et de plus notre programme est optimal.
Solution optimale dans Flakcats et Brain-Flak Classic
La solution suivante est optimale dans Flakcats et Brain-Flak Classic.
Explication
Solutions Brain-Flak alternatives sur 24 octets
Essayez-le en ligne!
Essayez-le en ligne!
Essayez-le en ligne!
la source
Gelée , 9 octets
Un programme complet qui imprime 700227072 , soit 888 cubes.
TryItOnline!
Comment?
la source
888^3
est-ce700227072
? C'est très intelligent, peut-être que d'autres langues peuvent utiliser cette astuce.Polyglotte de réponses purement littérales, 9 octets
Il s'agit d'un post wiki de la communauté destiné à recueillir des réponses littérales que la langue en question imprime automatiquement. Parce que c'est un wiki de communauté, n'hésitez pas à le modifier pour ajouter plus de langues là où il fonctionne.
Ce programme fonctionne dans:
3
imprime les données, le reste du programme est une manipulation de pile inutile)2\n2\n2\n1\n1\n1\n3\n3\n3\n
)En ignorant la nouvelle ligne finale, ceci est valable dans de nombreuses autres langues:
La plupart des liens vont à Try It Online!
la source
2\n2\n2\n1\n1\n1\n3\n3\n3\n
réellement, ce qui est parfaitement valide. Cela devrait-il être ajouté au message?echo '333111222';
(en PHP), mais cela fonctionne.C #,
114111118102 octetsSi nous ne nous soucions pas d'utiliser les mots appropriés: (102 octets)
Si nous nous soucions des mots appropriés: (120 octets)
Ma soumission originale - insensible à la casse: (113 octets)
Je sais que le commentaire n’est pas vraiment dans l’esprit du CG, mais c’est tout ce que je pourrais dire en peu de temps. Je verrai si je peux l’améliorer tout au long de la journée. Je dois sûrement obtenir au moins quelques points de bonus pour être un peu aventureux.
Edit: Merci à roberto06 pour avoir attrapé les lettres manquantes!
la source
V
de votre commentaire et ajoutervyt
, carV
n’y est présent que tant qu’ilv
est présent deux fois (typo, je suppose), qu’ily
est également présent deux fois et qu’ilt
est présent 5 fois. Voir ici . Néanmoins, super boulot!JavaScript,
3633 octetsAlertes
333111222
. Cela fonctionne parce que|
convertit ses deux opérandes en entiers 32 bits et que toute valeur qui ne ressemble en rien à un entier (par exemple la fonctionalert
) est convertie en0
.0|0
est0
, de sorte que l'||
opérateur retourne son opérande droit, ou333111222
Quelques versions plus intéressantes:
Sorties
(trelalert)\"(trelalert)\"(trelalert)\"
.Une solution utilisant
.repeat
aurait la même longueur, grâce au partageaert
:qui sort
(trpp.all)\"(trpp.all)\"(trpp.all)\"
.Profitant des barres obliques inverses supplémentaires pour se débarrasser
l
et fonctionnep
presque :Celui-ci sort
(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"(trax.cc)"
.la source
CJam , 9 octets
Les sorties
012345678901234567890123456789
Essayez-le en ligne!
Explication
la source
99,99,99,
, car pourquoi pas?brainfuck , 12 octets
Personne n'a dit que la sortie devait être courte. Cela produira 3 copies de chaque caractère ASCII sauf les 2 premiers.
Vous pouvez prouver que c'est aussi court que possible. Vous devez sortir donc vous avez besoin de 3 '.' il doit y avoir différentes sorties donc vous avez besoin de 3 [+ -] maintenant nous sommes à 6. Il faut imprimer 9 caractères, ce qui signifie soit d'ajouter 6 autres '.' ou en ajoutant une boucle, qui ajoutera 6 autres caractères.
Essayez-le en ligne!
la source
Python 2,
3630 octetsDans la mesure où un retour à la ligne n'est pas autorisé, il est probablement aussi bref que possible:
Essayez-le en ligne
Sorties
\"
trois fois, suivies de trois nouvelles lignes.Les programmes ci-dessous ne comptent pas le retour à la ligne final, ils ne sont donc pas valides.
27 octets :
Imprime 54 caractères de chaque personnage dans
print
.Essayez-le en ligne
Même longueur, sortie plus courte:
Les sorties
printprint*3*3printprint*3*3printprint*3*3
24 octets:
la source
print"""printprint*3*3"""*3
pour une sortie beaucoup plus courte ;-)print 123;print 123;print 123;
pour la solution naïve?print~9;print~9;print~9;
Perl 6 , 15 octets
Imprime six caractères distincts, trois fois chacun:
Essayez-le en ligne!
Comment ça fonctionne
$_
.$_
commence en tant que type objet de typeAny
, qui estsay
imprimé en tant que(Any)
.la source
C, 66 octets
Sortie
Ancienne Version 72 Octets
la source
JavaScript (ES6), 30 octets
Sorties
[object Object][object Object][object Object]
.Fonctionne en créant trois objets:
les deux premiers sont de la forme
{ "alert" : alert }
utilisant la notation ES6{alert}
le troisième est un simple objet vide
Il utilise ensuite
+
pour les concaténer ensemble, et tous les trois ont une expression identique comme une chaîne,[object Object]
.Le texte en tête
+
est inutile, il n’est présent que pour renseigner le nombre de+
caractères, mais il est inoffensif pour la sortie du programme.la source
(ES6)
au titre.PKod , 9 octets
Sorties: 111222333
Explication:
o a le code de caractère ascii "111" en décimal. Ainsi, s ajoute 111 à la variable, puis affiche le nombre. Le premier "fils" en fait 111 et imprime 111. Suivant en 222 et en 222, enfin en 333 et en 333
la source
Ruby , 12 octets
les sorties
Essayez-le en ligne!
Pour remplir le deuxième critère "encouragé", il me faut 15 caractères:
produit
Essayez-le aussi en ligne!
la source
Microscript II, 9 octets
Explanation: Crée un bloc de code, mais ne l'invoque pas. Lorsque l'exécution est terminée, le contenu du registre principal (IE ce bloc de code) est implicitement imprimé.
la source
{}
serait techniquement un quine, mais je ne pense pas que cela corresponde à notre définition de "quine correcte". Le programme"q"q
(que j'ai soumis au défi Quine) le fait cependant.Hexagonie , 9 octets
Essayez-le en ligne!
Imprimez
120120120
.x
peut être remplacé parf-m
(102-109)Explication
Le
xx@@
n'est qu'un remplissage pour se conformer aux règles. Le flux principal enregistrex
dans la mémoire (avec la valeur ASCII 120), puis l’imprime sous la forme d’un chiffre 3 fois.la source
C, 111 octets
(Notez que le nombre d'octets est également composé des trois mêmes nombres. Wow. Vous ne pouvez pas faire plus de méta que cela.)
Impressions:
la source
PHP , 33 octets
A opté pour quelque chose de plus intéressant que le programme de 9 octets sans balise PHP.
Les sorties
<?;<?=;'"<?;<?=;'"<?;<?=;'"
Essayez-le en ligne!
la source
99 , 15 octets
C'est neuf neuf, trois espaces et trois sauts de ligne, la sortie est -1110-1110-1110 .
Essayez-le en ligne!
Comment?
Les deux espaces sont traités comme un seul, ce troisième espace peut également être un espace de fin sur n'importe quelle ligne.
la source
Bash + coreutils,
159 octetsEssayez-le en ligne!
Exemple de sortie:
(Si vous essayez ceci, il imprimera votre uid, gid, etc. 3 fois.)
Si vous voulez éviter de répéter la même chaîne 3 fois (et que vous ayez la même sortie pour tout le monde, contrairement à ma première réponse), le meilleur que j'ai trouvé pour les utilitaires bash + Unix est de 15 octets:
Essayez cette deuxième version en ligne!
Sortie:
(Pas de nouvelles lignes dans le programme, 12 nouvelles lignes dans la sortie.)
Explication du programme cc dans cette réponse:
la source
LOLCODE ,
273240 (360286) octetsNotez la nouvelle ligne de fuite et essayez-la en ligne . La deuxième ligne était plus ou moins arbitraire et peut éventuellement être remplacée par une commande plus courte, mais je viens d’apprendre LOLCODE pour ce casse-tête. Comme le numéro de version est requis sur la première ligne, j'ai utilisé les numéros pour ajouter des boucles de longueur 1, 2 et 0 mod 3 afin de garantir que le nombre correct de caractères sera imprimé. À partir de cela, j'ai simplement compté chaque personnage (avec cet outil ). S'il apparaissait 0 mod 3 fois, aucune action n'était requise. S'il est apparu 1 mod 3 fois, il a été ajouté aux boucles 1- et 2 afin qu'il apparaisse trois fois dans la sortie. Si elle est apparue 2 fois 3 fois, le personnage a été ajouté à la boucle 12. EDIT: En remplaçant le premier
VISIBLE
avec une tâche (encore inutile mais obligé d'avoir 12 lignes au lieu de 11 nouvelles), j'ai pu couper 33 octets.Sortie (60 octets):
Notez la nouvelle ligne de fuite.
Le bon côté de cette solution par rapport aux autres réponses est que la sortie peut être facilement manipulée pour produire un texte assez significatif. Exemple (286 octets avec une nouvelle ligne):
Essayez-le en ligne. Sortie (222 octets avec une nouvelle ligne):
Malheureusement, je ne suis pas aussi bon avec les anagrammes que je le pensais: ')
la source
COQUILLE
plaisanter :) ( 9 octets )
ou plus sérieusement ( 24 octets )
Résultat :
la source
PHP, 24 octets
la source
<?
avec l'echo
instruction immédiate<?=
pour générer 123 3 fois.<= ?>
caractères n'apparaissent pas un multiple de 3 fois.Lot,
3621 octetsLes sorties
Edit: Sauvegardé 15 octets grâce à @ P.Ktinos.
la source
Japt, 9 octets
Impressions
undefinedundefinedundefined
. Testez-le en ligne!Explication
Ce code est transpilé dans le code JavaScript suivant:
O.o
est une fonction qui sort quelque chose sans nouvelle ligne. Si aucun argument ne lui est attribué, il est impriméundefined
, ce qui pourrait être considéré comme un bug, mais il est pratique ici. Il revient égalementundefined
, donc les trois appels sont imprimésundefined
.Je suis sûr qu'il y a plein d'autres façons de faire ça ...
la source
05AB1E , 9 octets (je suppose que vous pourriez dire que c'était un morceau de PI)
-0 octets grâce à Emigna / ETHProductions, ont rendu la solution plus correcte.
Versions alternatives:
[g-Q]
- Peut mettre n'importe quelle lettre aQ ici, à condition qu'elles correspondent toutes (voir ci-dessous).Essayez-le en ligne!
A expliqué:
PI,PI,PI,SORT,JOIN,SORT,JOIN,SORT,JOIN.
Résultat:
...111111222333333333444555555555666777888999999999
La raison pour laquelle il ne s'agit que de 9 octets, c'est parce que vous n'avez pas besoin des sortes, je les mets juste pour aider à illustrer.
Résultat sans
{
le code:3.1415926535897933.1415926535897933.141592653589793
Renditions alternatives:
Les commandes suivantes peuvent être utilisées à la place de PI:
la source
žv
,žw
ou nežx
sont valables que comme ils ont chacun seulement deux chiffres distincts.at least 3
, était juste PI au début quand je l'ai écrit. Que voulez-vous dire par les classes de personnages en arrière?JJJ
par???
bien.Cubix , 12 octets
Une réponse un peu ennuyeuse vraiment. Sorties trois
10
s suivies de nouvelles lignesEssayez-le en ligne! Mappe au cube
N
Pousse 10 dans la pileOo
x3 Sorties 10 et nouvelle ligne@
interrompt le programmeL'initiale
N@N@
n'est pas touchée.la source
N@N@NOoOoOo@
et n'inclut aucun espace.Pepe , 24 octets
Essayez-le en ligne!
Le programme contient 6 r, 6 e et 12 E.
Explication:
Sortie:
la source
V , 9 octets
Essayez-le en ligne!
Sorties
12i
24 fois:Vim, 12 octets
Émet la même chose que la réponse V
la source
empilés , 24 octets
Essayez-le en ligne! Sorties
54
chacune dep
u
ett
.la source
Befunge 93 , 9 octets
TIO
Impressions
0 0 0
(espace de fin, suivi de 3 octets nuls)Comme la pile de Befunge est complétée par
0
s, nous pouvons imprimer le caractère ASCII avec cette valeur et le nombre entier lui-même. Comme Befunge imprime automatiquement un espace après un entier, il nous reste 3 caractères distincts..
imprime0
(espace de fin),,
affiche un octet null et@
termine le programmela source