Il y a une abondance de questions concernant le dessin de formes à l'aide d'astérisques - j'ai donc pensé qu'avec autant d'astérisques, nous devrions en dessiner une en utilisant le tableau ASCII.
Défi
Votre tâche consiste à écrire un programme ou une fonction qui ne prend aucune entrée et génère ce texte exact:
!
"#
$%
&'
()
*+
,-
./
01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
\]^_
`a bc
de fg
hi jk
lm no
pq rs
tu vw
xy z{
|} ~
Pour référence, ce site répertorie le tableau ASCII complet.
Règles
- La sortie doit être le texte exact, comme indiqué ci-dessus. Les espaces blancs avant / arrière sont autorisés.
- Les failles de golf standard s'appliquent - pas de lecture de ce risque ASCII sur Internet, etc.
- Il s'agit de code-golf , donc la solution la plus courte (en octets) l'emporte.
Réponses:
05AB1E ,
4038373635 octetsEssayez-le en ligne!
Explication
la source
žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C»
, J'en ai 39, mais je pense que vous pouvez en raser avec ZIP.Python 3 , 110 octets
Génère le modèle
avec
%c
forx
, puis utilise l'interpolation de chaînerange(32,128)
pour insérer les valeurs ASCII dans le motif.Essayez-le en ligne!
Python 2 est un octet de plus, avec un déballage plus long des tuples mais plus court
print
.la source
V ,
54, 50 octetsEssayez-le en ligne!
Contrairement à l'habitude, ce programme ne contient aucun caractère non imprimable.
Explication:
Maintenant, le tampon ressemble à ceci:
Maintenant, nous construisons le milieu:
Voici où ça devient un peu bizarre.
Voici une note importante. La
>
commande est en fait un opérateur , ce qui signifie qu'elle ne fait rien sans argument, le texte sur lequel opérer. Par exemple,Mais puisque cette commande est dans une boucle, nous pouvons sauvegarder un caractère en ne donnant pas d'opérateur. À la fin d'une boucle, si un opérateur est en attente, il remplira
_
(la ligne actuelle) comme argument implicitement.Maintenant, j'admets que cette boucle est un peu bizarre, et il peut être difficile de garder une trace de ce à quoi tout le texte devrait ressembler à un moment donné. Vous pouvez donc utiliser ce programme plus simple pour voir à quoi il ressemblera après N boucles.
Si vous le définissez sur 9, vous pouvez voir que nous avons un peu de texte supplémentaire à supprimer. (Juste la ligne actuelle).
Nous supprimons donc la ligne actuelle avec
dd
. Mais attendez! Vous savez comment j'ai dit que les opérateurs doivent prendre un argument qui est parfois implicitement rempli? Les arguments sont également implicitement remplis à la fin du programme. Donc plutôt quedd
oud_
(qui sont équivalents), nous pouvons simplementd
et laisser V remplir le_
pour nous.la source
ÿ
:)Python 3
170165155147 octetsJ'ai tellement joué au golf, j'ai oublié comment ça marche ...
Essayez-le en ligne!
la source
JavaScript (ES6),
156…115114 octetsMalheureusement, l'infâme
String.fromCharCode()
coûte 19 octets.Formaté et commenté
la source
String.fromCharCode(...[...Array(n)].map(_=>k++))
pour économiser 4 octets.String.fromCharCode()
un tableau, mais j'ai opté pour une autre approche. Merci quand même!QBIC ,
153151 octetsC'est vraiment juste une série de boucles FOR et un casting d'un personnage (
chr$()
).Exemple de sortie:
la source
Perl , 113 octets
112 octets de code +
-l
indicateur.Essayez-le en ligne!
la source
PHP,
1101051039391 octetsimprime une nouvelle ligne de premier plan. Exécuter avec
-nr
ou tester en ligne .Le principe de base est adopté par Arnauld, mais cela se répète.
Et il profite bien des typecasts implicites de PHP:
NULL à int pour l'index de chaîne, float à int pour
%
, booléen à int pour&
et pour+=
.explication avec pseudo code
la source
Pyth , 53 octets
Un programme qui imprime le résultat.
Essayez-le en ligne!
Comment ça marche
srdC127
crée une liste des caractères ASCII imprimables et les concatène en une chaîne.c....,18 60
divise cette chaîne aux indices18
et60
, donnant une liste de trois chaînes correspondant aux différentes parties de la sortie: le haut, le milieu et le bas..e
commence une carte énumérée sur les chaînes avec les chaînes asb
et leurs indices ask
.[...)
crée une liste contenant l'action souhaitée pour chaque partie du diagramme. L'action correcte est choisie en indexant dans la liste avec l'index en cours, en utilisant@...k
.Haut
cb2
divise la chaîne en paires de caractères et+L*9;
ajoute des9
espaces à chaque paire.Milieu
c2b
divise la chaîne en deux chaînes de longueur égale.Bas
cL2cb4
divise la chaîne en groupes de quatre caractères et chaque groupe en paires..e
commence une carte énumérée, avec les paires de chaînes asZ
et leurs indices asY
.j*yYdZ
joint les paires sur les2*Y
espaces et+*-8Yd
ajoute les8-Y
espaces.js
fusionne tous les résultats et rejoint la liste résultante sur les retours à la ligne. Ceci est ensuite implicitement imprimé.la source
Haskell , 144 octets
Essayez-le en ligne!
Explication:
b!n=[1..n]>>b
définit une fonction!
qui répète une liste ou une chaîneb
n
temps.unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])
utilise cette fonction pour dessiner un astérisque d'astérisques (Oh, l'ironie!):#
est défini comme une fonction qui remplace consécutivement*
dans une chaîne des caractères d'une liste donnée. Il est appelé avec l'astérisque ci-dessus des astérisques et[' '..]
qui est une liste infinie de tous les caractères commençant par l'espace' '
.la source
" "!(2*n)
possible"(TWO SPACES)"!n
.Fusain , 39 octets (non compétitif)
Essayez-le en ligne! AST a fourni une explication,
χ
étant la variable préinitialisée pour10
.la source
J, 63
(pas en compétition)l'expression s'évalue de droite à gauche ainsi:
i: 10
compte de -10 à +10|
prendre des abs pour obtenir +10 à 0 revenir à +10=
auto-classer pour obtenir la forme en V de 1 dans un bloc de 0|.
inverser l'ordre des lignes pour obtenir la forme / \( +. 1&|."1 )
l'expression du crochet décale chaque ligne vers la droite d'une unité et les OU avec l'original( 9 21&$@{. , 1: , 1: , }. )
fourches imbriquées à mettre en position horizontale et dessus extensible,
pour raser le bloc dans une séquence linéaire pour le cumul( * +/\ )
cumuler et se multiplier avec soi20 21 $
rétablir la forme d'un bloc 20 rangées de 21 éléments31 +
ajouter 31 car le premier 1 doit être un code de caractère d'espace 3232 >.
étage à 32a. {~
choisir les caractères de l'ascii intégréla source
smoutput
commande ou l'équivalentRubis, 91 octets
Non golfé
la source
J'ai raté une réponse en C # alors ...
C # (.NET Core) ,
175174 octetsEssayez-le en ligne!
la source
int
s à l'intérieur de la boucle for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Tcl , 209 octets
Essayez-le en ligne!
Tcl , 212 octets
Essayez-le en ligne!
tcl, 213
démotcl, 214
démo
tcl, 227
démo
tcl, 236
démo
tcl, 237
démo
Approche alternative de même taille:
démo
Tcl, 288
démotcl, 297 octets (tentative naïve)
démo
la source
Poétique , 899 octets
Essayez-le en ligne!
Poetic est un esolang que j'ai réalisé en 2018 pour un projet de classe. C'est essentiellement du cerveau avec des longueurs de mots au lieu de symboles.
Ce poème est ... déprimant. 😟
la source
Python 2.7,
194188 octetsla source
map(chr
àmap(c
commec
a déjà été définie commechr
Jq 1.5 , 180 octets
Étendu
Essayez-le en ligne!
la source
Barres obliques ( /// ), 324 octets
La première action (par défaut) dans les barres obliques est «imprimer», donc la chaîne est imprimée. Le
/
et\
doit être échappé en procédure\
d.la source
Java 8,
176173 octetsPort de la réponse C # .NET de @Charlie , alors assurez-vous de le voter.
-3 octets grâce à @ceilingcat .
Essayez-le en ligne.
la source