Votre tâche consiste à imprimer le texte Good morning, Green orb!
, chaque caractère étant répété à la place autant de fois que l’octet le plus fréquent de votre source (le mode). Un retour à la ligne est autorisé et n’a pas besoin d’être répété.
Par exemple, si votre source était
print p
Depuis p
apparaît deux fois et chaque autre octet apparaît une fois que vous devez imprimer
GGoooodd mmoorrnniinngg,, GGrreeeenn oorrbb!!
Les réponses seront notées par le produit du nombre d'octets et du nombre de répétitions de la sortie. Par exemple, le code ci-dessus (s'il fonctionnait) donnerait 7 * 2 = 14 . L'objectif devrait être de minimiser son score.
Votre code doit contenir au moins 1 octet.
Utilisez ce programme pour vérifier que votre code et votre sortie correspondent
code-challenge
kolmogorov-complexity
hello-world
self-referential
Assistant de blé
la source
la source
Réponses:
Flak cérébrale ,
384 * 106366 * 100 = 36 600Essayez-le en ligne!
Explication
La première chose que je fais est de pousser la corde
à la pile en utilisant assez tactique cerveau-flak Kolmogorov-complexité.
Ensuite, nous mettons un marqueur hors pile pour nous dire combien de fois dupliquer chaque caractère. Cependant, je n'allais pas être capable de déterminer ce compteur avant d'avoir fini d'écrire le programme.
Ensuite, nous inversons simultanément la chaîne et dupliquons chaque caractère à la place le nombre correct de fois. Plus précisément le compteur + 1.
Ces deux parties du programme ont un mode de 99 parenthèses ouvertes. Cependant, puisque nous allons très certainement avoir besoin d'au moins une parenthèse. C’est ici que j’ai remarqué que le dernier caractère que nous avons poussé de manière
!
pratique contient le code de caractère 33, ce qui signifie que nous pouvons l’utiliser pour créer 99, le nombre exact que nous souhaitons à l’aide d’une seule parenthèse supplémentaire. C'est tout à fait la coïncidence, mais ça marche.la source
Haskell , 37 octets × 3 = 111
-20 grâce à H.PWiz. -25 Merci à Nimi.
Essayez-le en ligne!
Les opérateurs de Haskell, FTW.
Rappelez-vous de ne jamais jouer au golf sur mobile. Je continue à faire des erreurs stupides. Je peux pousser au moins la moitié du blâme sur mobile. : P
la source
<*
de la sauvegarde d’octets (notez que je n’ai pas vérifié sa validité)brainfuck , 235 x 77 = 18 095 points
Edit: -2 octets grâce à @Dennis
Essayez-le en ligne!
Test TIO
Attendez, ce n'est pas du code bowling? \ s
Avec seulement 8 caractères utilisables, le brainfuck est l’une des pires langues à poser cette question. Je devais commencer par minimiser le personnage qui apparaîtrait le plus inévitablement, généralement l'un
+
ou l' autre-
. Après avoir rédigé la première version du code, je l’ai trouvé horriblement déséquilibré en faveur de l’+
al. J'ai réarrangé des parties du code, telles que la génération de grands nombres, pour en utiliser davantage-
. Enfin, je me suis retrouvé àune égale quantité des deux caractères à 77un de moins-
que+
. Il est certainement possible de réduire cela davantage, ce que je tenterai demain.Mais bon, au moins je bat la réponse de Brainflak
la source
;#
langue (° ͜ʖ °)Gelée , 13 octets * 1 = 13
Essayez-le en ligne!
la source
Alice , 49 octets * 2 = 98
144Essayez-le en ligne!
Explication
C'est le cadre habituel des programmes linéaires qui fonctionnent entièrement en mode ordinal. En dépliant le flux de contrôle en zigzag, nous obtenons:
L'idée de base est d'éviter les caractères qui se répètent plus de deux fois à l'aide d'une translittération. La translittération que nous allons faire est la suivante:
La translittération fonctionne bien dans Alice, c'est que les chaînes
from
etto
sont d'abord répétées dans le LCM, bien que dans ce cas, la longueur de lafrom
chaîne dépende de la longueur de la chaîne. Nous avons donc:De cette façon, nous obtenons quatre personnages différents pour représenter les
o
s, et trois pour chacunn
,r
et l'espace. Nous pouvons générer lafrom
chaîne en utilisant l'extension de la plage comme suit:Le seul problème maintenant est qu'il nous en faudrait quatre
"
pour leinput
et lato
chaîne. Pour éviter cela, nous les mettons tous les deux dans une seule chaîne et nous les séparons à l'=
aide d'un séparateur.Le reste est juste:
la source
Python 2 , 62 × 3 = 186
Essayez-le en ligne!
la source
C (gcc) ,
74 × 6 = 444barrés 444 est encore régulier 44477 × 5 = 38581 × 4 = 324Essayez-le en ligne!
la source
C (gcc) , 68 × 3 = 204
Merci à @MDXF pour avoir économisé 9 points et ouvert la voie à 6 autres!
Essayez-le en ligne!
Version alternative, ASCII imprimable, 69 × 3 = 207
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 46 octets × 2 = 92
(Contient des éléments non imprimables)
Essayez-le en ligne!
+ Beaucoup d'octets, merci à la page de code de Dyalog, merci à @ Adám pour l'avoir signalé.
la source
~⎕AV∊⍨⎕UCS 18
.Vim,
4241 frappes × 3 = 123Explication:
iGod morning, Green orb!<Esc>
Écrivez la chaîne
God morning, Green orb!
(uneo
manquante).2|
Aller au premier
o
.qsyl2pl@sq
Créez une macro récursive
s
. Comme effet secondaire, tripler le couranto
.X0
Supprimez-en un
o
et sautez au début.@s
Exécutez la macro
s
, qui répète chaque caractère deux fois.la source
C, 78 × 4 = 312
Essayez-le en ligne!
356332la source
Japt , 24 octets * 2 = 48
Contient un non imprimable. Testez-le en ligne!
La majorité du programme est juste une chaîne compressée, qui se décompresse en
et
m²
ensuite,m
en répétant chaque personnage en répétant²
wice ok, c’était un peu exagéré . L'espace est le seul caractère qui apparaît 3 fois dans la chaîne compressée; pour sauvegarder une instance, nous la remplaçons par une nouvelle ligne, puis nous utilisions·¸
pour scinder les nouvelles lignes et joindre immédiatement des espaces. Bien que 2 octets plus long, il réduit considérablement le score (de 66 à 48).Maintenant, si seulement il y avait un court chemin à faire en utilisant aucun caractère deux fois ...
la source
*salute*
Et maintenant que je regarde votre réponse, je vois qu’elle a ² alors que le lien avait ³ :)SNOBOL4 (CSNOBOL4) , 97 octets * 10 = 970
Essayez-le en ligne!
ouais ........ SNOBOL exige que les opérateurs soient séparés par des espaces, et certaines exigences sont assez délicates. Le code contient 9
'\t'
et 10' '
, de sorte que toute amélioration nécessitera un changement d'approche assez important.la source
R ,
65 octets * 5 = 32559 octets * 5 = 29562 octets * 4 = 248Essayez-le en ligne!
Il y a 4
(or,')
personnages.la source
strrep
auparavant, cela devrait être utile.Ruby , 52 octets × 3 = 156
Essayez-le en ligne!
la source
Perl 5 , 59 × 2 = 118 points
Essayez-le en ligne!
Perl 5 , 51 × 3 = 153
156pointsEssayez-le en ligne!
Perl 5 , 43 × 4 = 172 points
Essayez-le en ligne!
Sauvegardé 2 octets dans chaque solution grâce à @Xcali (quelques modifications auparavant). Pour toutes les optimisations, regardez les modifications.
la source
-M5.010
, qui compte égalementV , 35 octets * 2 = 70
Essayez-le en ligne!
Hexdump:
la source
SOGL V0.12 , 16 octets * 1 = 16
Essayez-le ici!
Compression!
Cependant, si ce
Green
n’est pas le cas, cela pourrait être plus court de 3 octets: /la source
Python 2 , 62 * 4 = 248
Merci à @ovs et @Giuseppe!
Essayez-le en ligne!
Python 2 , 51 * 6 = 306
Essayez-le en ligne!
Python 2 , 70 * 5 = 350
Essayez-le en ligne!
Merci à Xcoder pour sauvegarder un octet des deux versions!
la source
6
etfor
.\x6f
s qui reste bon pour 244Ohm v2 , 20 octets * 1 = 20
Essayez-le en ligne!
Je dois aimer la compression, même si malheureusement ce n'est pas aussi bon que celui de SOGL.
la source
Nettoyer , 77 octets * 3 = 231
Essayez-le en ligne!
la source
CJam , 32 octets × 2 = 64
Essayez-le en ligne!
Pousse une chaîne, puis XOR les 20 premiers caractères avec
[0, 1, …, 19]
, puis duplique chaque caractère.la source
05AB1E , score: 22 (22 octets * 1)
Essayez-le en ligne.
Explication:
REMARQUE 1: La pile intégrée dans la liste intégrée
)
est utilisée à la place de la paire intégrée‚
, car elle‚
fait déjà partie du mot du dictionnairegood
.Remarque 2: les deux virgules dans le code
‚
et,
peut sembler identique, mais sont des caractères unicode différents . Le premier est généralement utilisé pour la paire intégrée et le second pour l’ impression intégrée à STDOUT avec une nouvelle ligne . Dans ce cas, ils sont utilisés pour le mot du dictionnairegood
et la virgule attendue dans le résultat.Voir ce conseil 05AB1E (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi
…‚¿•´,
est"good morning,"
et„ˆ¨èã
est"green orbit"
.la source
PowerShell , 46 octets * 4 = 184 points
Essayez-le en ligne!
la source
$0
PowerShell ,
49 * 558 octets * 4 = 232 pts-13 pts grâce à ASCII uniquement
Essayez-le en ligne!
Utilise le formatage pour passer de 5
o
s à 4 et émettre des chiffresla source
Gelée , 31 octets × 2 = 62 points
Essayez-le en ligne!
Explication
la source
JavaScript (ES6), 61 octets * 3 = 183
Afficher l'extrait de code
JavaScript (ES6), 51 octets * 4 = 204
Réponse suggérée par @ETHproductions .
Afficher l'extrait de code
JavaScript (ES6), 73 octets * 4 = 292
Afficher l'extrait de code
JavaScript (ES6), 58 octets * 6 = 348
Afficher l'extrait de code
la source
_=>_
'$&'
'$&$&$&$&$&$&'
pour le remplacement, ce qui ensuite, je pense, vous permet de supprimer deux instances et de descendre à avoir plusieurs personnages à égalité à 4, réduisant considérablement le score ...Rétine , 36 × 4 = 144
Essayez-le en ligne! Il y a trois nouvelles lignes et quatre
o
s, donc il n'y a plus rien à faire.la source
Ruby, 55x4 = 220 points
Je suis assez contrarié par l'utilisation de each_char qui fait le nombre de r 5.
la source
Pushy , 36 * 2 = 72
Essayez-le en ligne!
Le principe de base de cette réponse est que chaque caractère
n
est stocké den + index - 29
manière à éviter la répétition dans la chaîne d'origine. Ce mapping a créé la chaîne dans les backticks. Le reste du programme le décode simplement et imprime chaque caractère deux fois:Octets utilisés deux fois:
`'W
Changelog
la source