À mon humble avis, le texte standard est ennuyeux. Je propose donc une nouvelle norme d'écriture, des mots qui marchent!
Mots de marche
Les mots qui marchent sont des mots qui répondent à certains caractères. Pour les besoins de ce défi, les personnages déclencheurs proviennent [u, d, r, l]
de up down right left
.
Chaque fois que vous rencontrez un tel caractère lors de l’impression de texte, vous déplacez la direction du texte.
Par exemple, le texte abcdef
entraînera:
abcd
e
f
Règles
- Les majuscules
UDRL
et les minusculesudrl
devraient changer la direction, mais la casse devrait être conservée dans la sortie - L'entrée ne contiendra que des caractères imprimables
(0-9, A-Z, a-z, !@#%^&*() etc...)
, pas de nouvelles lignes! - Chaque fois que le texte entrera en collision, il écrasera l'ancien caractère à cette position.
- La sortie doit être présentée à l’utilisateur sous n’importe quelle question à la mode, mais ce doit être une sortie unique (pas de tableau de lignes)
- Les nouvelles lignes suivies sont autorisées
- Les espaces de fuite sont autorisés
- Les failles standard s'appliquent
Cas de test
empty input => empty output or a newline
u =>
u
abc =>
abc
abcd =>
abcd
abcde =>
abcd
e
abcdde =>
abcd
d
e
codegolf and programming puzzles =>
cod
e
g
o
dna fl sel
z
p z
rogramming pu
ABCDELFUGHI =>
I
AHCD
G E
UFL
It is in my humble opinion that standard text is boring. Therefore I propose a new writing standard, walking words! =>
dnats taht noinipo el
a b
rd m
It is in my hu
t
e
x
t
i
s
b
o
ring. Therefore I propose a new writing stand
a
rd
,
w
a
rdw gnikl
s
!
C'est code-golf , le code le plus court en octets gagne!
code-golf
grid
printable-ascii
Bassdrop Cumberwubwubwub
la source
la source
golf
ressemblerait la sortie du mot ?gfl
Réponses:
Charbon de bois ,
29272019 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Explication:
Boucle sur les caractères saisis.
Si la lettre en cours est une direction ...
puis mettez à jour la direction de marche actuelle.
Imprimez le personnage dans le sens de la marche actuel, par défaut à droite si aucune direction n’a encore été définie.
la source
⌕
était censé être un№
. Désolé pour ça.Dyalog APL , 63 octets
s@(n+11 9∘○¨+\0j1*⊃¨,⍨\(8∘≠⍴¨⊢)0,'rdluRDLU'⍳¯1↓s)⍴∘'',⍨2×n←≢s←⍞
utilisations
⎕IO←0
et fonctionnalités de v16 (@
)n←≢s←⍞
entrée brutes
et sa longueurn
⍴∘'',⍨2×n
créer une matrice d'espaces 2n par 2ns@(...)
modifier la matrice avec les caractères des
aux (paires de) index spécifiéscomment les indices sont calculés:
¯1↓s
déposer le dernier caractère des
'rdluRDLU'⍳'
encoder'r'
comme 0,'d'
comme 1, etc. autres caractères comme 80,
ajouter un 0(8∘≠⍴¨⊢)
transformez tous les 8 en une liste vide, tous les autres en une liste d'un élément,⍨\
concaténations cumulées échangées (abcd
->a ba cba dcba
)⊃¨
d'abord de chaque0j1*
constante imaginaire i à la puissance de+\
sommes cumulatives11 9∘○¨
partie réelle et imaginaire de chacun; obtenir des coordonnées dans la gamme-n
...n
n+
les centrer sur la grande matricela source
Pyth,
6865 octetsSuite de tests
Cela utilise un dictionnaire, indexé par une paire de coordonnées, qui est mis à jour lorsque l'entrée est lue, puis imprimé à la fin. Il utilise également une tonne d'astuces de golf intelligentes.
Voici comment je l'ai écrit, en utilisant le
-m
drapeau de l'interprète pour effacer les espaces et les commentaires avant de lancer:la source
C #,
525474 octetsEdit: 51 octets sauvés grâce à @steenbergh
Ce n'est pas joli, mais ça marche ...
Golfé:
Ungolfed:
Explication:
Utilise un tableau à deux dimensions et la
d
valeur pour incrémenter la position du tableau dans le sens de la correction, où les valeurs d sont les suivantes:Tester:
la source
d=0;
, remplacez cette instruction par la déclaration dans la deuxièmecase 0:
instruction de commutateur et procédez de la même manière que dans d'autres cas. Vous n'aurez peut-être pas besoin d'un deuxième commutateur. Enfin, supprimez cette instructiona[y,x]=s[i]
et écrivez-la en haut. du premier interrupteur.a[y,x]=s[i]
avant le premier changement?switch(s[i].toLowerCase())
(ou quel est l'équivalent c # ...), puis supprimer toutes les majuscules. Devrait économiser des octets.ToUpper()
parce que ce n'estchar
pas unstring
. Les choix sont soits[i].ToString().ToUpper()
ouchar.ToUpper(s[i])
- je pense que celui-char
ci est légèrement plus court. Cheers :)JavaScript (ES6), 218
220 232Modifier J'utilisais
u
ett
pour garder une trace de la position la plus haute et la plus à gauche, mais je me suis rendu compte que cet
n'était pas du tout nécessaireMoins golfé
Tester
la source
05AB1E ,
27 26 25 2322 octets3 octets sauvés grâce à Grimy
Essayez-le en ligne!
Explication
la source
Javascript, 4̶6̶6̶,
455, 433 octetsÉditions: 11 octets enregistrés, grâce à l'utilisateur 1000000000 10 environ, grâce à l'utilisateur2428118 Suppression de quelques points-virgules inutiles.
Je suis à peu près sûr que cela peut être joué davantage, mais je n'y suis pas parvenu. Je suis toujours nouveau, alors tout conseil est très apprécié :)
Ungolfed:
}
J'ai plus ou moins pris l'approche de:
la source
['r','u','l','d']
par"ruld"
z=
au début de votre programmea.split``
.Python 3,
314309290268 octetsJ'ai essayé d'exécuter mon programme en tant qu'entrée dans mon programme avec des résultats intéressants. Hah, essayez d'interpréter cela, Python!
Rasé 5 octets - compliments à Jack Bates.
23 octets supprimés par Kundor
Note: Je pense qu'il y a eu une erreur de mesure avec mes octets à cause de l'utilisation d'éditeurs différents. Cependant, je suis à peu près sûr que le dernier en date est correct.
la source
'r':(1,0)
par'r':d
et en supprimant l’espacew[a] for
. Aussi c'est fou !!! Combien de temps cela vous a pris?X,Y=map(...)
ligne parX,Y=zip(*m)
. Fonctionne ici. (le*m
décompresse en une liste de ses clés et zip les regroupe en deux n-uplets.)PHP,
238 223 205204 octets12 octets enregistrés par Jörg (
stripos
au lieu depreg_match
), 1 octet + accolades en guettant au lieu de terminer la nouvelle ligne, 16 accolades jouées depuis le changement de direction, 1 de plus avec ternaire au lieu deif
.Exécuter en pipe
php -nR '<code>'
ou essayer en ligne .panne
la source
strspn($r[$y+=$e][$x+=$d]=$c,udlruDLR)
devrais économiser quelques octets au lieu d’utiliser la regex, ´stripos (_ulrd, $ r [$ y + = $ e] [$ x + = $ d] = $ c) `devrait être meilleur que strspn$argn
save 3 OctetsJava 10,
288286280263 octets-17 octets grâce à @Grimy .
Explication:
Essayez ici. (REMARQUE: je supprime tous les espaces finaux / nouvelles lignes pour rendre la sortie un peu plus compacte. N'hésitez pas à supprimer le
.replaceAll("(m?)\\s+$","")
dans latest
méthode pour voir le résultat réel.)la source
d<69?1:d>84?-1:0
peut être5-d/14
d==82?1:d==76?-1:0
peut être3-(d^16)/23
Perl, 204 + 3 = 207 octets
+3 pour
-F
Les espaces ne font pas partie du code et sont fournis pour des raisons de lisibilité.
Comme pour ma solution au défi Fizz Buzz, je crée un hachage avec les coordonnées x, y pour chaque étape du processus, tout en conservant les maxima et minima des coordonnées x et y mémorisées, puis en boucle et imprimant le tout.
Si je suis désespéré, je pourrais peut-être transformer les trois dernières lignes de la première
for
boucle en une seule déclaration dégoûtante pouvant économiser un octet ou deux, mais je ne suis pas impatient de voir le résultat complètement illisible.la source
Excel VBA, 205 octets
Je suis un peu surpris de la capacité d'Excel à concurrencer les réponses existantes. Cela fonctionne parce que
w
etz
garde une trace de la direction.la source
SmileBASIC,
148146 octetsAppelez la fonction avec
W "text",vx,vy
, où vx et vy sont la direction au début (1,0 par défaut)la source
Rapide 3, 283 octets
Ungolfed
Attention
Une saisie plus longue nécessite un plus grand écran. La sortie ne traite pas les lignes / colonnes "vides" si j'ai bien compris que cela est acceptable selon les règles du challenge.
Rant
print
suxla source