Notre serpent classique a développé un déséquilibre des hormones de croissance . Pour aggraver les choses, sa queue est gelée en place! Étant donné l'entrée directionnelle spécifiée dans Figure 1
, écrivez un programme pour déterminer où il grandira.
Figure 1. Entrée directionnelle.
Spécifications du programme
- Lisez le caractère saisi caractère par caractère
STDIN
. - Après avoir lu un personnage, sortez le serpent vers
STDOUT
. Veuillez inclure une ligne vierge entre chaque fois que vous imprimez un serpent. - Le serpent est composé d'
<>v^
une tête. La tête du serpent peut être un caractère rond de votre choix, tels queo
,0
,O
ou☺
. - Toute combinaison de
wasd
est valide pour la saisie. - Votre programme ne doit pas supposer que l'entrée est dans une certaine longueur.
- Le serpent peut s'accumuler sur lui-même, écrasant
<>v^
. Voir des exemples de mécanismes de croissance de serpents. - La fin des espaces blancs est acceptable, mais votre serpent doit avoir l'air correct.
Notation
C'est du code-golf . Votre score est le nombre de caractères de votre programme. Le score le plus bas gagne!
Exemples de serpents:
Contribution: ddddssaassdddddww
Sortie:
>>>>v
v
v<< ☺
v ^
>>>>>^
Contribution: dddsssaaawww
Sortie:
☺>>v
^ v
^ v
^<<<
Contribution: dddsssdddddasddddwww
Sortie:
>>>v
v ☺
v ^
>>>>v< ^
>>>>^
Contribution: dddwwdddssssaaaaaaaaawww
Sortie:
>>>v
☺ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Contribution: ddddssssaawwddddd
Sortie:
>>>>v
v
>>>>>☺
^ v
^<<
Contribution: dddddssaawwwwddddd
Sortie:
>>>>>☺
^
>>>^>v
^ v
^<<
Contribution:
ddddaaaasssssdddddddddddwwwwwaaaasssssdddddddddddwwwwwwwwwwsssssaaaasssssdddddddwwwwwddddssaaaasssddddaaaassssssssssdddwwwwwwwddddswaaaassssddaasssaaaaaaaaaawwwwddddssssaaaaaaaaaaawwwwddddsssssssssaaaa
Sortie:
v
v
v
v
v
v<<<< v<<<< v<<<< >>>>v
v v ^ v ^ ^ v
v v ^ v ^ v<<<<
v v ^ v ^ v
v v ^ v ^ v
>>>>>>>>>>>>>>>>>>>>>v<<<<
v
v
v v<<<<
v v ^
v v
>>>>v >>>>v v v
^ v ^ v v v<<
^ v ^ v v v
^ v ^ v v v
^<<<v<<<<<<<<<<<<<
v
v
v
v
O<<<<
Réponses:
Ruby, 207 caractères
Non golfé:
(le lambda pour
a
réécrit parce que la ligne à laquelle l'affectation ci-dessus écrit n'est plus sur le tableau)la source
ECMAScript 6 Javascript (399
401431)Doit être exécuté dans un navigateur prenant en charge ECMAScript 6 en raison des fonctions fléchées.
Voici des violons qui ont été modifiés pour fonctionner dans n'importe quel navigateur (commun) en n'utilisant pas les fonctions fléchées. Ils impriment également à la
textarea
place:Version golfée
GIF animé:
Un des exemples du PO:
L'exemple de Stretch Maniac :
Non golfé
Voici une version (légèrement) non golfée de quelque temps avant que je ne commence vraiment à jouer au golf:
la source
convert
. Assez facile :)sed, 71
Golfscript,
165126Même approche que ma réponse précédente, mais en positionnant correctement le curseur avant et après. Je suis assez fier de l'approche du positionnement du curseur - en gros, il exécute d'abord le serpent à l'envers, sans imprimer de caractères.
la source
echo "dddddssaawwwwddddd" | sed -e 's/w/\^\x1B[D\x1B[A/g' -e 's/a/<\x1B[2D/g' -e 's/s/v\x1B[S\x1B[D/g' -e 's/d/>/g' -e 's/$/@/'
ne donne pas la sortie correcte pour moi.\n
s après le@
afin que votre invite aille ailleurs.Java - 646
Autant être le premier!
Je parie que vous pouvez tous battre cela.
un (sorte de) golfé
Plus petit -
entrée - dddsssdddwwwwaaaaaaaassssssssssddddddddddddddddd
entrée - dddsssdddddasddddwww
mon préféré - dwdwdwddaasassdddddwdwdwddsdswawaasassdddddddwdwdwddsdswawaasassddddwwwwwwwssssssdsdddwwwwddaassddaassddddsssdddwdwdwddaasasassddddwwwwssssssssasasaaawdwwdwddwwdddddddwdwdwddsdswawaasassddddddddddwwdwwwwaasssassdsdddddddwdwdwwwwasasssssssssssdwwwwwwwddd
la source
C # 607
"Ungolfed" avec des espaces (cela ne sera pas synchronisé avec la version golfée):
la source
Python 3: 259 octets
J'ai décidé de stocker le serpent dans un dict, avec les coordonnées des clés. Recherchez et parcourez ensuite la plage de sortie en remplaçant les espaces vides.
PS. Mon premier golf :) Faites-moi savoir si ma réponse est inappropriée
la source
O
au lieu de☺
vous permet d' économiser 2 octets.☺
est un hareng rouge.☺
n'était en fait pas compté comme 3 octets.O
, donc je ne m'en inquiéterais pas. Il est clair d'après le code que cela fonctionnerait toujours pour tout autre personnage, mais l'utilisation☺
vous permet d'exécuter facilement les cas de test du défi sans modifications.#coding=utf-8
. Notez que#coding=utf-16
cela ne fonctionne pas. Il☺
faut donc compter comme 3.Python 2.7 - 274 octets
Version non golfée
la source
SyntaxError: invalid syntax
.05AB1E ,
35343028 octetsUtilise
0
comme tête de serpent.-4 octets grâce à @Grimy .
Essayez-le en ligne (pas de suite de tests pour tous les cas de test à la fois, car il n'y a aucun moyen de réinitialiser le Canvas, donc les sorties se chevauchent ..).
Explication:
Voir cette 05AB1E pointe de mes (sections Comment les chaînes de Compresser ne font pas partie du dictionnaire? Et Comment compresser les grands entiers? ) Pour comprendre pourquoi
.•₃º•
est"adsw"
etŽO^
est6240
.Quant à une brève explication de la toile intégrée
Λ
et de ses trois arguments:Premier argument: longueur (s): la taille des lignes que nous voulons tracer. Puisque nous devons garder à l'esprit le chevauchement, nous utilisons la taille 2 pour chaque personnage et 1 supplémentaire pour la tête du serpent.
Deuxième argument: chaîne (s): les caractères que nous voulons afficher. Quels sont les personnages dans ce cas, ajoutés au personnage principal du serpent.
Troisième argument: direction (s): les directions dans lesquelles ces lignes de caractères de la longueur donnée doivent être dessinées. En général, nous avons les directions
[0,7]
qui correspondent à ces directions:C'est pourquoi nous avons l'entier[ ← , → , ↓ , ↑ ] respectivement.
6240
pour les directionsVoir cette astuce 05AB1E pour une explication plus détaillée sur le Canvas intégré
Λ
.la source
γ
soit nécessaire du tout. Cela semble très bien fonctionner.Perl - 394
Pas le plus court, mais il bat au moins Javascript, C # et Java.
Quelques astuces:
Choses qui font mal:
la source
C - 273 octets - avec entrée interactive!
Le champ est imprimé à chaque fois qu'un caractère est entré et s'agrandit si la tête du serpent s'approche du bord. Je ne sais pas à quel point c'est portable - quelqu'un sur Internet a dit que getch () ne fonctionne pas sur les plates-formes non Windows. Difficile de dire si ASCII 1 ressemblera à un visage souriant non plus.
La version golfée est assez ennuyeuse car il n'y a aucun moyen de quitter le programme avec grâce. Control-C ne fonctionne pas pour moi. En revanche, la version non golfée se termine si un caractère autre que «w», «a», «s» ou «d» est entré.
Soi-disant "non golfé":
la source
05AB1E , 23 octets
Essayez-le en ligne!
Explication:
la source