Guide l'alphabet
Étant donné un tableau de directions, où les directions sont définies comme suit:
NW N NE
W . E
SW S SE
Ou comme index (vous pouvez utiliser ces indices pour les directions au lieu des chaînes ci-dessus):
0 1 2
3 . 4
5 6 7
Vous pouvez choisir l'un ou l'autre format, la prise en charge des deux n'est pas requise par le défi. Générez la chaîne d'alphabet correspondante qui représente le chemin tracé, en commençant par A. Le nombre de directions ne dépassera jamais 25, ce qui signifie qu'il ne pourra jamais passer Z
, vous n'avez donc pas à gérer ce scénario. Aucun autre format d'entrée ne sera accepté sauf si vous pouvez expliquer pourquoi ces formats ne fonctionnent pas en raison d'une limitation de langue. Ceci est plus facile à expliquer en utilisant un exemple élaboré de manière verbale.
Alors, regardons un exemple rapide:
[E,SE,N,S,S,S,NW,W,N] or [4,7,1,6,6,6,0,3,1]
Commencez toujours par A.
A
Allez vers l'est jusqu'à B.
A-B
Allez vers le sud-est jusqu'à C.
A-B
\
C
Allez vers le nord jusqu'à D.
A-B D
\|
C
Retournez au sud vers E, en écrasant C.
A-B D
\|
E
Continuez vers le sud pendant 2 cycles jusqu'à F et G.
A-B D
\|
E
|
F
|
G
Allez vers le nord-ouest jusqu'à H.
A-B D
\|
E
|
H F
\|
G
Allez vers l'ouest jusqu'à moi.
A-B D
\|
E
|
I-H F
\|
G
Fin au nord au point J.
A-B D
\|
J E
| |
I-H F
\|
G
La valeur finale que vous retourneriez est en lisant le graphique final de gauche à droite, de haut en bas:
ABD
JE
IHF
G
Résultant en:
ABDJEIHFG
Il s'agit du code-golf , le plus petit nombre de victoires d'octets.
A
tel quiA
ne sera pas le premier résultat imprimé?Réponses:
MATL ,
64585750464037363530 octetsEssayez-le sur MATL Online
Explication
la source
JavaScript (ES6),
1081079487 octetsEnregistré un énorme 13 octets, grâce à Titus!
7 octets de plus enregistrés grâce à edc65!
Comment ça fonctionne
La formule
(d += d > 3) * 9 - d % 3 * 8 - 28
traduit les directions0..7
dans les décalages suivants:Nous utilisons ces décalages pour déplacer le pointeur
p
dans le tableau unidimensionnelr
et écrire les lettres aux positions résultantes.Nous réitérons
[i = 9, ...a]
plutôt que justea
pour insérer la lettre de départ «a». Parce que nous initialisonsi
en9
même temps, nous introduisons un décalage spécial de 54 (le résultat de la formule ci-dessus pourd = 9
). Après la première itération,p
égale646 + 54 = 700
, ce qui laisse juste assez d' espace pour supporter jusqu'à 25 se déplace vers le nord-ouest:25 * -28 = -700
. C'est pourquoip
est initialisé à646
.Ensuite, nous devons simplement rejoindre le tableau pour obtenir notre chaîne finale. Les valeurs non définies entre les lettres sont simplement ignorées par
join()
.la source
d+=d>3,p+=d*9-d%3*8-28
enregistre 11 octets.i
dans la définition du tableau, économisant 2 octets supplémentaires)(++i).toString(36)
(toujours sans essayer de comprendre vos calculs, mais cela semble fonctionner)Octave,
145138131 131123105103908785 octetsEssayez-le en ligne
Merci à Suever 2 octets enregistrés!
Réponse précédente 103 octets:
Essayez-le en ligne!
Essayez d'abord 145 octets
Quelques explications
la source
image
partie package de votre bytecount, vous devez charger le package imagepkg load image
pkg load *
au début. ideone.com pourrait être un meilleur choixpkg install -auto image-1.0.0.tar.gz
donc peut-il se charger automatiquement Veuillez consulter le manuelMATLAB,
8785 octetsenregistré 2 octets grâce à Luis Mendo
la source
'%&''?AYZ['-64
belle astuce ... en fait 66 octets si vous réécrivez en octavePHP, 93 octets
Fonctionnant sur une seule baie comme la réponse de Kodos Johnson .
Mais cela a tellement d'autres idées que j'ai publiées moi-même.
prend les nombres des arguments de ligne de commande. Courez avec
-nr
.déplacer le curseur
calcul initial:
golf:
la fusion des affectations ne sauve rien, mais améliore la lisibilité:
panne
la source
Python 2,
180 178 178176 octetsla source
PHP, 121 octets
Cela s'exécute dans la ligne de commande avec l'
-r
indicateur et prend un tableau de caractères (chaîne) d'index comme argument.la source
""<$n=$argv[1][$i]
au lieu de($n=$argv[1][$i])!=null
R, 160 octets
la source