Aujourd'hui était la journée d'inscription à l' examen AP dans mon école, et alors que je bouillonnais méticuleusement dans les pages et les pages d'informations requises, l'idée de ce défi m'a frappé. Donc, étant donné une chaîne de lettres et de chiffres, sortez un graphique à bulles correctement rempli.
Règles:
- Pour chaque caractère de la chaîne d'entrée, remplacez ce caractère dans la colonne correspondante par un
#
ou@
ou tout autre symbole raisonnable (si votre langue le gère, le caractère Unicode 'full_block': █ semble vraiment bien) - Un espace est représenté par une colonne vide (voir exemples)
- Une entrée valide sera une chaîne composée uniquement de lettres majuscules, de chiffres numériques et d'espaces.
- L'entrée sera d'une longueur avec un minimum de 1 et un maximum de 32 caractères.
- La sortie doit être MAJUSCULE
- Si la longueur d'entrée est inférieure à la longueur maximale de 32, votre programme doit toujours sortir les colonnes vides restantes
- Votre programme n'a pas à gérer les entrées en minuscules de la même manière que si elles étaient en majuscules, mais des points bonus si c'est possible.
Format du conseil:
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
Exemples:
CODE GOLF ->
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
█CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DD█DDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEE█EEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFF█FFFFFFFFFFFFFFFFFFFFFFF
GGGGG█GGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK
LLLLLLL█LLLLLLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
O█OOOO█OOOOOOOOOOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
00000000000000000000000000000000
11111111111111111111111111111111
22222222222222222222222222222222
33333333333333333333333333333333
44444444444444444444444444444444
55555555555555555555555555555555
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ012345 ->
@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
B@BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CC@CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDD@DDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEE@EEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFF@FFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGG@GGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHH@HHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIII@IIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJ@JJJJJJJJJJJJJJJJJJJJJJ
KKKKKKKKKK@KKKKKKKKKKKKKKKKKKKKK
LLLLLLLLLLL@LLLLLLLLLLLLLLLLLLLL
MMMMMMMMMMMM@MMMMMMMMMMMMMMMMMMM
NNNNNNNNNNNNN@NNNNNNNNNNNNNNNNNN
OOOOOOOOOOOOOO@OOOOOOOOOOOOOOOOO
PPPPPPPPPPPPPPP@PPPPPPPPPPPPPPPP
QQQQQQQQQQQQQQQQ@QQQQQQQQQQQQQQQ
RRRRRRRRRRRRRRRRR@RRRRRRRRRRRRRR
SSSSSSSSSSSSSSSSSS@SSSSSSSSSSSSS
TTTTTTTTTTTTTTTTTTT@TTTTTTTTTTTT
UUUUUUUUUUUUUUUUUUUU@UUUUUUUUUUU
VVVVVVVVVVVVVVVVVVVVV@VVVVVVVVVV
WWWWWWWWWWWWWWWWWWWWWW@WWWWWWWWW
XXXXXXXXXXXXXXXXXXXXXXX@XXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYY@YYYYYYY
ZZZZZZZZZZZZZZZZZZZZZZZZZ@ZZZZZZ
00000000000000000000000000@00000
111111111111111111111111111@1111
2222222222222222222222222222@222
33333333333333333333333333333@33
444444444444444444444444444444@4
5555555555555555555555555555555@
66666666666666666666666666666666
77777777777777777777777777777777
88888888888888888888888888888888
99999999999999999999999999999999
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ->^^^
Et bien sûr, c'est du golf de code , donc la réponse la plus courte l'emporte
[A-Z0-9]{1,32}
et autoriser tout comportement pour les entrées ne correspondant pas à cela.$
cela n'apparaîtra pas dans les entréesRéponses:
Husk , 23 octets
Essayez-le en ligne ou essayez-le avec le caractère fantaisie █ (mais un nombre d'octets invalide)!
Malheureusement, je n'ai pas pu fusionner les deux
map
s en un (sauf en utilisant des parenthèses, ce qui coûte 24 octets).Explication
la source
Rubis , 62 octets
Essayez-le en ligne!
Renvoie un tableau de chaînes. Pourrait être joué plus loin en rejetant les jointures de chaînes et en renvoyant un tableau 2D de caractères comme c'est généralement la norme, mais je ne suis pas sûr si cela est autorisé ici.
la source
C (gcc) ,
132126 octetsEssayez-le en ligne!
Merci à Jonathan Frech d'avoir économisé 6 octets.
la source
puts("")
est équivalent àputchar(10)
.++a)putchar((x[a-s]-*_)?*_:64);
->)putchar(x[a++-s]-*_?*_:64);
.64
au golf1
.putchar
appel pourrait être joué au golfputchar(*_*(*_!=a[x-s]));
.Rouge , 177 octets
Essayez-le en ligne!
Plus lisible:
la source
Fusain , 21 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Version précédente avec validation d'entrée,
3432 octets. Edit: enregistré 2 octets grâce à @ ASCII uniquement.Essayez-le en ligne! Le lien est vers la version détaillée du code.
la source
StringReplace
) Sur une note latérale, un remplacement intégré serait très pratique à droiteCast
R , 104 octets
Essayez-le en ligne!
la source
Gelée ,
1817 octetsUtilise un caractère espace. Pour utiliser un
#
remplacer⁶
par”#
pour un coût d'un octet.Essayez-le en ligne!
Comment?
la source
³Ḣ,⁶yØA;ØD¤µ32СZY
à 18 ans, ce qui, je pense, peut aussi être amélioré! Sortir si ...C ++ 14,
319 octets237C'est la première fois que je fais cela, dans le pire langage CodeGolf possible: P
Essayez-le en ligne!
la source
Node.js, 85 octets
Port vers Node.js suggéré par @DanielIndie
Essayez-le en ligne!
JavaScript (ES6),
10398 octetsEssayez-le en ligne!
la source
+""
, n'est-ce pas?)x/32
pour enregistrer 2 octets de plus, car ilBuffer
est contraint aux entiers.f=(s,x=561,c=Buffer([48+x/33%43]))=>x<1749?(s[x++%33]==c?'@':x%33?c:`\n`)+f(s,x):''
Perl 5
-F
, 47 octetsEssayez-le en ligne!
la source
Haskell , 86 octets
Pour une approche beaucoup plus agréable (et moins d'octets), voir la solution de Laikoni !
Essayez-le en ligne!
Alternativement, pour le même nombre d'octets, nous pourrions utiliser:
Essayez-le en ligne!
Explication / Non golfé
L'opérateur
(#)
est très similairezipWith
mais la fonction est codée en dur, st. il utilise#
si deux caractères sont égaux et sinon il garde le deuxième, non golfé:Si la première liste est épuisée, elle ajoute simplement les éléments restants de la seconde:
Avec cet assistant, nous devons seulement générer la chaîne
"A..Z0..9"
, répliquer chaque élément 32 fois et compresser l'entrée avec chaque chaîne, sans golf:la source
max
. Je pense que vous devriez publier cela comme votre propre solution car elle est très différente de ma solution.Haskell , 74 octets
Essayez-le en ligne! Une chaîne d'entrée
x
est remplie d'espaces jusqu'à une longueur de 32 avectake 32$x++cycle" "
. Pour chaque caractèrec
deA
àZ
et0
à9
, nous regardons les caractèresa
de la chaîne d'entrée rembourrée et les remplaçons par~
quanda
etc
sont égaux etc
autrement. Ceci est réalisé parmax[c]['~'|a==c]
, qui est par exemplemax "A" "~" = "~"
quanda = c = 'A'
, etmax "A" "" = "A"
quandc = 'A'
eta = 'B'
. Parce que cela produit une chaîne singleton au lieu d'un caractère, lado
-notation est utilisée qui concatène les chaînes singleton en une seule chaîne.Basé sur la solution Haskell de BMO .
la source
Python 2, 138 octets
Prend en charge les caractères majuscules et minuscules et laisse une colonne vide pour les espaces.
Si le bonus n'en vaut pas la peine, je choisirai 125 octets et ne prendrai en charge que les entrées majuscules:
la source
Stax , 15 octets
Exécuter et déboguer
Il utilise
'#'
pour indiquer une bulle remplie.Déballé, non golfé et commenté, il ressemble à ceci.
Exécutez celui-ci
la source
Pyth,
2320 octetsEssayez-le ici
Explication
la source
APL + WIN, 56 octets
Demande la chaîne d'entrée et utilise le caractère # comme identifiant:
Explication:
la source
C (gcc) , 124 octets
Essayez-le en ligne!
Au lieu d'un tableau codé en dur, je l'ai remplacé par une fonction de recherche à la place. Heureusement, le jeu de caractères ASCII a des plages alphabétiques et numériques contiguës (je vous regarde, EBCDIC!) De plus, je me suis assuré de garder la sortie à exactement 32 caractères en utilisant
sprintf()
: si ce n'était pas une exigence de la tâche, le la fonction serait de 97 octets:Essayez-le en ligne!
la source
CJam , 31 octets
Essayez-le en ligne! Utilise les espaces comme caractère "trou".
Si un espace de fin est autorisé, cela fonctionne pour 29 octets :
Essayez-le en ligne!
Voici une variation de 34 octets qui utilise à la place le bloc complet Unicode (
█
):Essayez-le en ligne!
Explication
la source
Python 2 ,
1039694 octets-7 octets grâce à Mnemonic
-2 octets grâce à Jonathan Frech
Utilise
'
comme symboleEssayez-le en ligne!
la source
05AB1E , 19 octets
Essayez-le en ligne!
Explication
la source
a[b]
ne fonctionne pas comme vous le voulez ici, est-ce: P?MATL , 21 octets
Utilise un espace comme caractère marqueur.
Essayez-le en ligne!
Explication
la source
Lisp commun , 150 octets
Essayez-le en ligne!
Explication
la source
Java 10,
120118117 117 octetsEssayez-le en ligne (pour TIO, j'ai utilisé '█' (
9608
au lieu de35
) pour une meilleure visibilité).Explication:
la source
Rétine , 64 octets
Essayez-le en ligne!
Remplit la chaîne d'entrées à droite avec des espaces à 36 caractères
Ensuite, mettez chaque personnage sur sa propre ligne et ajoutez
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
avant.Faites correspondre une paire du même caractère sur la même ligne, qui existe si et seulement si le caractère de cette ligne correspond à l'un des
ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
. Remplacez le premier par@
et retirez le second.Les seules lignes sans correspondance sont celles avec des espaces, donc les caractères non-espace sont un bloc carré 36 × 36. Transpose-le.
Conserver uniquement les 32 premiers caractères de chaque ligne
la source
Tcl ,
153145 octetsMerci @sergiol pour -8 octets
Essayez-le en ligne!
Explication
la source
SNOBOL4 (CSNOBOL4) ,
155150 bytesEssayez-le en ligne!
Explication:
la source
Prolog (SWI) ,
235229228222214 214198173167165 octets-6 octets grâce à @Cows quack , -6 octets grâce à @ 0 '
Essayez-le en ligne!
Explication
la source
SOGL V0.12 , 19 octets
Essayez-le ici!
la source
Octave , 61 octets
Essayez-le en ligne!
La fonction fonctionne comme suit:
la source
Perl 6 , 57 octets
Essayez-le en ligne!
la source