J'ai conçu une nouvelle police que j'appelle PrettyFont. J'ai mis beaucoup de temps à le perfectionner, mais comme je travaille, je n'ai pas le temps de le terminer. Par conséquent, il ne contient actuellement que 4 caractères. Un jour, quand je serai devenu riche, ce sera mon objectif de toute ma vie de le finir, mais pour l'instant ...
Voici PrettyFont: (0, 1, 2, 3)
#### ## #### ####
# # # # # #
# # # # ###
# # # # #
#### ### #### ####
Chaque caractère mesure 4 pixels de large et 5 pixels de haut. Maintenant! Je veux que vous m'écriviez un programme qui génère un nombre dans PrettyFont afin que je puisse commencer à envoyer des dessins à imprimer.
Règles:
L'entrée est un numéro de chaîne en base 4 (uniquement les caractères 0-3), par exemple "01321". Le programme doit être capable de gérer au moins 10 caractères dans la chaîne. Des points BONUS sont donnés au programme qui prend un entier de base 10 réel au lieu d'une chaîne. Clarification EDIT : le bonus entier signifie que l'on peut entrer n'importe quel nombre de base 10, comme 54321, et le programme le convertira en base 4 et le sortira (dans ce cas 31100301).
La sortie sera le nombre imprimé avec PrettyFont. Exemple d'entrée et de sortie:
> "321"
####
#
###
#
####
####
# #
#
#
####
##
#
#
#
###
Un énorme bonus pour le programme qui peut le produire en une seule ligne comme ceci:
> "321"
#### #### ##
# # # #
### # #
# # #
#### #### ###
Le caractère «#» n'est pas obligatoire et peut être remplacé par n'importe quel caractère.
En sortie verticale, une ligne vide est requise entre chaque caractère PrettyFont. Si quelqu'un effectue la sortie horizontale, un caractère d'espace blanc '' ou un caractère de tabulation est requis entre chaque caractère PrettyFont.
C'est le golf de code, le code le plus court gagne! (J'en ai besoin parce que mon ordinateur de bureau a un stockage limité.)
banner -c '#' 0123
Réponses:
k (
118 117 72 71 6966 car.)Je n'ai pas encore fait beaucoup d'efforts pour jouer au golf,mais il atteint la sortie horizontale souhaitée en pas trop de caractères:Prend l'entrée de stdin, imprime la sortie sur stdout.
edit: En implémentant une forme de compression sur la sortie "bitmap", je l'ai réduit à 72. Le bitmap est maintenant construit en convertissant les bits 64 bits en binaire et en mappant les 0 et les 1 sur "#" ou "".
Je pourrais le faire à partir d'hexagone comme quelques-unes des autres solutions mais je pense que cela finirait plus longtemps. Il s'avère que l'hexagone est meilleur.Exemple de sortie pour 012301:
// edit: -6 car
la source
Python3 (124)
Désolé, la verticale n'était pas intéressante pour moi.
la source
J,
848281807569 caractèresPrend l'entrée du clavier:
Nombre magique FTW (ou pour la deuxième place dans ce cas) :-)
la source
#:
ne semble pas fonctionner pour cette taille de nombre.#:1166416635908028473935870
et les#:1166416635908028473931775
deux donnent la même réponse pour moi.C -
164151 caractères horizontauxSur IDEone: http://ideone.com/gljc3
Le code (164 octets):
EDIT - 151 octets
J'ai ajouté les suggestions des commentaires et puis certaines. Ce n'est pas exactement sûr (tableau de longueur 0 que je veux
gets()
...).Remarque,
i=puts("")
est un comportement indéfini puisque je traitevoid
commeint
! Il revient systématiquement0
sur ma version de MinGW, mais il revient1
sur le compilateur utilisé par IDEOne.Accepte les décimales, produit la base 4 (167 octets)
la source
gets
dedansfor
(sauvez 1). Accédezputs
à l'for
incrément externe et enregistrez les accolades. Enregistrer les parenthèses:(n[i]-48)*5+j
->n[i]*5-240+j
, même astuce avec+4*(..
.Ruby, 0123 caractères + un bonus ([0123] vs '#')
Exemple:
EDIT: Ruby, 87 caractères
la source
Rubis
Vertical: 116 caractères
Exemple d'exécution:
Horizontal:
150148 caractèresExemple d'exécution:
la source
Mathematica
174145139118119123 caractèresFonctionne maintenant avec une entrée en base 10 (bonus entier). Les versions antérieures peuvent être trouvées dans les modifications.
Utilisation d'ArrayPlot :
Avec,
ArrayPlot
nous pouvons convertir directement les 1 et les 0 en carrés noir et blanc, économisant ainsi quelques caractères. Par exemple, avec n = 58021, soit 32022211 en base 4:Explication
L' entrée est paramètre du programme,
n
.Zéro peut être représenté par
{{1,1,1,1},{1,0,0,1},{1,0,0,1},{1,0,0,1},{1,1,1,1}
ou par l'homologue hexadécimalf999f
.L'expression
f999f62227f924ff171f
,, contient les informations pour afficher tous les nombres {0,1,2,3}. (Remarque: il commence parf999f
, qui, comme nous l'avons noté, est nul déguisé.) Parce que Mathematica ne reconnaît pas cela comme un nombre, j'ai utilisé89998622278924881718
(en quatre chaînes entières) à la place, j'ai divisé le nombre en ses chiffres entiers, puis utilisé 15 dans chaque endroit un 8 est apparu. (Cela m'a permis d'utiliser des chiffres au lieu de chaînes partout.)la source
Mathematica ,
112107103Mon point de vue sur la méthode de David.
105 avec le BONUS:
(pour
n = 54321
)la source
APL (
5857)Production:
la source
Python 2.7
Vertical 160
Horizontale
234216Les deux prennent l'entrée comme une chaîne entre guillemets sur stdin
exemple:
$. / joli
"0123"
la source