Vous ne savez rien Ce que je fais pour "Le chaos est une échelle " est une ligne mémorable de la série télévisée Game of Thrones .
Le but de ce défi est de construire une échelle du chaos, dans l'art ASCII.
Le défi
Contribution
- Largeur de l'échelle,
W >= 3
(entier) - Hauteur du pas,
H >= 2
(entier) - Nombre de barreaux,
N >= 2
(entier).
Sortie
Une échelle avec des barreaux horizontaux et des rails verticaux , tous larges d'un caractère. La largeur de l'échelle ( W
) inclut les deux rails et la hauteur de marche ( H
) inclut le barreau correspondant.
Tous les barreaux, y compris les plus hauts et les plus bas, auront un morceau de rail vertical de longueur H-1
directement au-dessus et au-dessous. L'exemple rendra cela plus clair.
Le schéma sera constitué de caractères ASCII imprimables non-d'espaces , c'est-à-dire de la plage comprise entre !
(point de code 33
) et ~
(point de code 126
). Les caractères réels seront choisis de manière aléatoire . Étant donné les entrées, chacun des choix aléatoires de caractères doit avoir une probabilité non nulle. Autre que cela, la distribution de probabilité est arbitraire.
Les espaces de début ou de fin , horizontaux ou verticaux, sont autorisés.
Exemple
Étant donné W=5, H=3, N=2
, une sortie possible est la suivante.
x :
g h
q$UO{
t T
6 <
bUZXP
8 T
5 g
Notez que la hauteur totale est H*(N+1)-1
, car il y a des N
barreaux et N+1
des sections verticales.
Règles additionnelles
Les moyens de saisie et le format sont flexibles comme d’habitude. Par exemple, vous pouvez entrer les trois nombres dans n'importe quel ordre ou un tableau les contenant.
La sortie peut être via STDOUT ou un argument renvoyé par une fonction. Dans ce cas, il peut s'agir d'une chaîne avec des nouvelles lignes, d'un tableau de caractères 2D ou d'un tableau de chaînes.
Un programme ou une fonction peut être fourni.
Les failles standard sont interdites.
Le code le plus court en octets gagne.
Cas de test
Pour chacun, W, H, N
une sortie possible est affichée.
W=5, H=3, N=2:
\ ~
: K
ke:[E
5 u
0 _
8Fr.D
# r
7 X
W=3, H=2, N=2:
$ X
Mb)
0 ]
(T}
j 9
W=12, H=4, N=5:
d Y
P `
5 3
p$t$Ow7~kcNX
D x
` O
* H
LB|QX1'.[:[F
p p
x (
2 ^
ic%KL^z:KI"^
C p
( 7
7 h
TSj^E!tI&TN8
| [
< >
= Q
ffl`^,tBHk?~
O +
p e
n j
W=20, H=5, N=3:
G %
o y
% 3
- 7
U'F?Vml&rVch7{).fLDF
o }
U I
h y
a g
;W.58bl'.iHm\8v?bIn&
, U
N S
4 c
5 r
F3(R|<BP}C'$=}xK$F]^
' h
h u
x $
6 5
Réponses:
Jelly ,
24 2322 octetsUn programme complet prenant les trois arguments
W
,H
,N
et d' imprimer le résultat.Essayez-le en ligne!
Comment?
Construit un masque de tableau en 2D à partir d’un seul réseau et de ses sections verticales ci-dessous, répète
N+1
fois et supprime le dernier réseau, puis place des caractères aléatoires ou des espaces en fonction de la valeur du masque.la source
Langage de script Operation Flashpoint ,
643624 octetsRidiculement long car il n'y a aucun moyen de créer les caractères à partir des codes de caractères.
Appeler avec:
Sortie:
L'échelle est très chaotique car la police n'est pas à espacement fixe.
Déroulé:
la source
"\n"
marche,"\xa3"
que quelque chose£
ne marche pas? Si vous pouvez utiliser des échappements Unicode, vous pourrez peut-être réduire ce tableau.\n
est la seule issue reconnue. (Et entre""
guillemets pour en représenter un"
)05AB1E , 29 octets
Entrée prise dans la commande
N, H, W
Essayez-le en ligne!
Explication
la source
C, 95 octets
la source
R ,
1381291119893 octets-13 octets grâce à Neal Fultz!
-1 octet grâce à Robin Ryder
Essayez-le en ligne!
Fonction anonyme; renvoie le résultat sous forme de matrice.
Grâce à cette question de Word Grids , j'ai beaucoup plus pensé aux matrices que d'habitude. J'ai observé que les lignes se trouvaient dans les lignes de la matrice qui étaient un multiple de la hauteur de l'étape
H
(R est indexé sur 1), et que les rails étaient les première et dernière colonnes,1
etW
. Je crée donc une matrice de caractères ASCII aléatoires, remplace les lettres qui ne correspondent pas à ces critères par des espaces et renvoie la matrice. Le lien TIO l’imprime bien.Neal Fultz a suggéré une indexation différente pour les caractères d'espacement
[-H*(1:N),3:W-1]
, qui remplace tous les caractères à l'exception de ceux en rangées de multiples deH
:-H*(1:N)
et non sur le bord,3:W-1
<==>2:(W-1)
.R , 121 octets
Essayez-le en ligne!
Une amélioration par rapport à l'approche initiale basée sur la matrice avec laquelle j'ai commencé; C'est le même algorithme mais les
for
boucles sont plus courtes que de construire et d'imprimer une matrice (mais pas si je ne l'imprime pas!)la source
m[-H*(1:N),3:W-1]=" "
semble un peu plus court - vous pouvez toujours remplacer les testsrow
etcol
par une tranche de 2 jours.sample(33:126,...)
par32+sample(94,...)
.Perl 5 , 81 octets
Code 80 octets + 1 pour
-p
.Essayez-le en ligne!
la source
Charbon de bois ,
3432 octetsEssayez-le en ligne! Prend les entrées dans l'ordre approximatif N, H, W. Verbose (
Plus(InputNumber(), 1)
est actuellement cassé sur TIO). Explication:Carte sur la plage
1..H*(N+1)
. Cela signifie que les barreaux apparaissent quandi
est un multiple deH
.Rejoignez le résultat de:
mappage sur la plage implicite
0..W
:si la colonne n'est pas
0
ouW-1
et que la ligne n'est pas un multiple de,H
indiquez un espace;sinon, prenez la variable de caractère ASCII prédéfinie, inversez-la (en plaçant l'espace à la 94e place) et imprimez un caractère aléatoire de ce qui est maintenant le premier 94. (Parce que c'est
Slice
nul.)Rejoignez en utilisant la chaîne vide. Le résultat final est imprimé implicitement.
la source
NθGH↓θ→N↑θ*‖O↓F⁻N¹C⁰θ¿EKA§⮌γ‽⁹⁴«
? Eh bien, je l'ai coupé en deux et j'ai commis unea0a6316
erreurMap
lequel il utilisaitnot is_command
quand il voulait direis_command
. Donc, vous étiez censé écrireNθGH↓θ→N↑θ*‖O↓F⁻N¹C⁰θUMKA§⮌γ‽⁹⁴
s'il n'y avait pas eu ce bogue.C (gcc) ,
141131114109107 octetsDevrait être capable de jouer au golf un peu ...
Essayez-le en ligne!
la source
i=1
dans la déclaration globale?Perl 6 ,
7673 octetsEssayez-le en ligne!
Prend (h, n, w) comme arguments. Retourne une liste de chaînes.
Explication:
la source
xx
et++$
au lieu demap
. Peut-être que vous pouvez trouver un endroit pour jouer au golf avec des octets?PowerShell ,
132124 octetsEssayez-le en ligne!
Nous construisons une échelle composée uniquement de
#
premier ( exemple ), puis nous parcourons|%{...}
chaque caractère et,if
comme d'-eq
habitude35
, nous extrayons un nouveauRandom
caractère de la plage appropriée. Sinon, nous produisons une sortie (c’est-à-dire un espace ou une nouvelle ligne).la source
JavaScript (ES6),
117115 octetsUne fonction récursive construisant la sortie caractère par caractère.
"Regardez Ma, pas de saut de ligne littéral!"
Démo
Afficher l'extrait de code
la source
String.fromCharCode
, car je ne pouvais honnêtement pas dire que je le ferais moi-même après avoir vu cela. Faites-moi savoir si vous pensez que le mien est maintenant trop similaire au vôtre.Python 2 , 142 octets
Essayez-le en ligne!
Octets sauvegardés grâce à ovs!
la source
1
à l'avant cependant> _>Pyth, 33 octets
Essayez-le en ligne: démonstration
la source
Python 2 , 114 octets
Essayez-le en ligne!
la source
SOGL V0.12 ,
3231 octetsEssayez-le ici!
Entrée dans l'ordre N, W, H.
Explication:
18 octets sans les caractères aléatoires: /
la source
Java 8,
203188168133132130 130128126 octetsEssayez-le en ligne!
la source
W->H->N->{for(int i=0,j;i++<H*N+H-1;){char c=10;for(j=W;j-->0;c=i%H<1|j>W-2|j<2?(char)(Math.random()*94+33):32)System.out.print(c);}}
W-1
, la boucle interne doit effectuer une itération supplémentaire (>=0
+1 octet).W->H->N->{for(int i=0,j;i++<H*N+H-1;){char c=10;for(j=W;j-->=0;c=i%H*j<1|j>W-2?(char)(Math.random()*94+33):32)System.out.print(c);}}
;++i<H*N+H;
: -2 octets.Haskell ,
226220211190 octetsEssayez-le en ligne!
Économisé 9 octets grâce à Laikoni
21 octets sauvés grâce à wchargin
Devrait être golfable (
b$(s w)<$[2..h]
etb$((s w)<$[2..h])++[r w]
). Je ne me sens pas à l'aise avec IO et le golf.la source
t w h n= ...
:(w#h)n= ...
.pure
peut être utilisé à la place dereturn
. Vous pouvez supprimer les parenthèses(d ' ')<$
et(s w)<$
.c=randomRIO('!','~')
, ce qui vous permet également en ligned=return
. En outre,mapM id
est un octet plus court quesequence
.JavaScript (ES6), 144 octets
Crée l’échelle de
#
caractères, puis les remplace par un caractère ASCII aléatoire.Test Snippet
Afficher l'extrait de code
la source
String.fromCharCode
etMath.random
dans une solution - pourquoi JavaScript nous déteste?! Entré avec cela pour 137 octets, ce qui est très similaire au vôtre, juste sans le tableau. Je me demande maintenant si une solution récursive pourrait être encore plus courte; enquêtera plus tard.JavaScript (ES6),
129117 octetsMalheureusement, alors que j'étais en train de jouer au golf, Arnauld m'a battu pour une solution similaire mais plus courte . En combinant nos 2 solutions, cela peut être 113 octets
Inclut un retour à la ligne.
L'essayer
la source
Japt
-R
,42414037342825 octetsPrend une entrée dans la commande
H,W,N
.L'essayer
la source
QBIC , 76 octets
Explication
Échantillon échantillon
la source
MATL ,
6350 octets-13 octets grâce à Luis Mendo
Essayez-le en ligne!
Je suis encore nouveau au golf en MATL (et je ne suis pas très bon chez MATLAB d'ailleurs), donc je sais que cela n’est probablement pas optimal. Les pourboires sont les bienvenus. Prend les entrées dans l'ordre
N,H,W
.Et c'est parti:
Nous avons maintenant une matrice de caractères aléatoires.
Maintenant, il y a aussi une matrice logique pour les rails.
Maintenant nous avons 3 matrices sur la pile:
Nous faisons donc ce qui suit:
la source
X"
est3$
par défaut.6Y2
peut - être à portée de main au lieu de13:106
...20+
.~~
estg
.J3G&Ol5LZ(
peut être utilisé à la place de1F3G2-Y"h1hJT3$X"
X"
. Dans ce dernier conseil,5L
est ,[1 0]
mais je ne sais pas comment cela est utilisé conjointement avecZ(
- je reçois qu'il est l' affectation1
aux première et dernière colonnes , mais je ne comprends pas comment5LZ(
accomplit cela. Je vais probablement vous envoyer un message plus tard dans MATL CHATL à ce sujet, alors ne vous inquiétez pas pour le moment.0
identique à "fin".Z(
assigne aux colonnes. Bien sûr, n'hésitez pas à me cingler!Powershell, 102 octets
Script de test moins joué:
Sortie:
la source
Ruby , 71 octets
EDIT: Oups, je pensais que c'était un nouveau défi à cause de la récente modification pour corriger une faute de frappe. Je laisse encore ça parce qu'il n'y a pas encore de réponse pour Ruby.
Essayez-le en ligne!
la source