Vous êtes un petit point sur un plan cartésien. En pensant à votre existence, vous décidez de vous déplacer dans votre avion et de toucher des objets. Vous remarquez que chaque paire de coordonnées que vous visitez a un interrupteur. Pour vous divertir, vous décidez de basculer chaque commutateur que vous rencontrez.
Le défi : Créer un programme qui prendra une entrée de longueur aléatoire, en utilisant uniquement les caractères v
, ^
, <
et >
. Ces caractères correspondent à des mouvements.
<
vous déplace d'une unité vers la gauche^
vous déplace d'une unité vers le haut>
vous déplace d'une unité à droitev
vous déplace d'une unité vers le bas
En utilisant cette entrée générée aléatoirement, calculez le nombre de commutateurs restants dans la ON
position, en supposant que vous démarrez à (0,0), toutes les lumières commencent dans cet OFF
état et que vous n'allumez aucune lumière avant d'avoir effectué votre premier mouvement. ( Ce qui signifie, si vous commencez à (0,0), et se déplacer jusqu'à 1 unité à (0,1), il y aura maintenant une lumière). Si vous tombez sur un commutateur en ON
position, celui-ci sera activé OFF
.
Cas de test:
v>v<^^<v<<^<^><<>^^>>><v>vv^v>v^><><<^>><<<vvv^vvv>v>>v><vv^^<<>vv^^>v^<>>^^<^^>^^v<^>^<vvv^v^v><^<<v<<>><<>v>>^><^>^^<>>>>vv>^<<^<<><vvv<v^>>vvv>v^>>><<v^>^^^^v>>^>^v>v<vv^<>^<<v>vv>><^^<^><vv^^v<v<v^^^>v<^vv^v<><vv^^^>v^>v>vv<<^><v<^v><<v^^v>>v<vv<><^^^v<^v><><<^^<>^>><^^^>vv^<>>>>^<^<<<<>>>v<<v<v<vv><<vv<vv<^v^^^>>vv<>v>><<<v^>vv><v<<<v<<>^vvv^<v^v>^^v^v><<v^>>>v<v<v^>>>v><>>>^<><<<<>vv>v><v>v><^v<>v>>>vv<<>^>^>v<^><^<^vv^><^^>v<^^v>v^v<^^^^vv<>v<>><v^^><>v<<<>v^<v^^><>^<>^<>><>^^<>^v><>>><v<^^>>v>^^^<v
donne 125 lumières allumées.
>>><^>>>^vv><^^v^<<<>>^<>>^<^>^<<^^v^<v^>>^<<><<>^v<^^^vv>v><^>>^<^<v><^v<^<<^^v><>>^v<^>^v<vvv<<<v^vv>>^vv>^^<>>vv>^<^>vv<>v^<^v<^^<v^^^<<^><><>^v>vvv<^vvv<vv><vv<^^v^^<^^>>><<<>^<>>><^<<<>><>^v><^^vv<>>><^^^<^>>>>v<v^><<>v<v<v^<<^><v^^><>v>^<>^^^vvv<v^>^^^^v>v<v>>>v^^<v<vv>><<>^vv><<vv<<>^^v>>v<^^v>><v<v<<>^^vv>>^v>v>v<>^>^v<>>><>v>v<<v<^<>>>vv>>v>^<>vv^v><><^v^>v<^^>v<^v>>v^>^>>v>v>^>^<^^>vv>>^vv<^><>^><<v^<><<^<^>^^vv^<<^^<^^v<v<>^>v>>>>>>vv<<v>^>vv^>^><^<^^><<vvvv>vvv<><<><v^vv><v^^<>^>><^vv<><>^>vv>>>vv^vv<<^v^^<<v^^>^>vvv<><<v>^>^>v<v>^<^^^^<^>^>><>>^^vv<>v<^>v><v<v^>>v<^v<vv>v^>v<v^<^^^^v<^<^<<v<<<v<v^^>vv^>><<<v>>^^^>^<^>>>v^v><^^vv^>><^^vv<vv<v^><>>^><<<>>^^v^v<<v^<vv^^^>><>>^v^^^>>^>^<<^>v>^^v>><>v>^>vv^^<vvvv<><^v>^><<>>><^<^v^<<vvv^v<<<<<><><<><><<v>v<v>v><^v^^vvv>><>^>^>^v<<vv^^^v^vv><v><><v<v<<>>>v<^<^v<<>^v<<^v<><>v>>^^>^<v^<<^v^^^vv>><v^<v>^v><^<>>>>^^<vv<>^^>^>v^v^^>><>^^<^v^<v<<v<^<<^^vv>v>^<vv<<^^v^vv^>^^<>v>^>^<>vv><v>>><<><<vv^^<vv<>>^v>^<<vv>^><<>^<v>v><<v^<v<><v>^<^<^><^^^^>>>^<>^^><>>v^<vv^<^<<vvvv>>>v^v>>^>v^><<>>v<>>^>><vvvvv<<vvvv<v>^v<vv^<>><<><v^^<^<v>^v<^<<>^v<v^<>v<<>^<<vvv><^><^^^<>>v^<<>vv><^^^>><^>v^v>v<v^>>v>>v>vv<<v<<vvv^^^>^<v^^<^<v<^<>>v^<<v>>v^><v<vvvvv^^^<v^^<><v<<^>>^><^<v^v^^>><v><>v>^<vvvv><<v^^v^>^>v>><>^^v>v^>vv^>v<^<<^vv^>vv^<v>^<v^<>^v>v^>v^<<>^^<^>^^>vv^>>vv>v>vvv><>^v<<<<v^>v^^v<><v<v>^<^><^><<v<>><<>v^^>>><<><>>><<>><v^^>><^>><^<>v^^vvv>v<^<<vv^>vv^><<>v><>^<>v^^v>^>v^<>^><v>^><<^v<v^^<v>><^^>>^<^<^v<v>^>^<^<v><><>>>><>^<^<v>v<v^>v><>v^>v^<<><^<>>v<^vv^^^>^<<<<>^>^<><^vvv>^^<v^v>v>v^v>v>>vv>^><>^vv>^<v<v^<>vv^<v<><>^>>vvv><>>^<<v^<<>^<v^>v<^^^<^<^^<>^>>v>^<v>vv<v^^>><<<<<>>v>^v>^>>>>v>>^^>^<<<^<<<v>>^><<<<^vv<<>^v<^>v^<v<<>v<>^<^<^<^<>>^^^vvv<v>^vv>^><^<v^>^v<v>><><vvv<^^>>v<^v>^>>>><v^<v^^<^^v<vvv<v>^^<<>><^<v^v<^vv>v>vv>^^<>^^^^>>^v><vv<<<v>^v^>>v^>><<<^v^v<<>><<vvvvv<v^vv>vvvv><v^v<^^^><vv^^<>><>><^>^^^^v>v><><v^<>^v<>^^<^^>^^^vvv>>vv^v^<v<vv^v>v>>>^v^^vv^<^v>v^v>>^v>v<v^<^^><vvv>><<>><>><v>v<^<v>>>>v^^v^^>^><<v><^<<>>v<>^^<<>vv^>>vv^^^v>>>^v^><v<<^>v<v><>>>^>>^<<>>^><<vv<^^>^^^v^^<>>>vv><<>v<><<<>v<<>>>v<>v<>^<vv^v<^^<<<v>^v>>^^>^><<^vv<><><>v>^v>^<>v>>^^^<^^>>vv>v<<<v^><<v><^v><>v<^<<^<>^vv>^><^^^^^<<v^^<>v>><^<v^^^vv>^v<>^<v<v>v>^><^<<^<>><^^>vv^<>^<>vv<>>v<vv^>><^^<^>v<><>vv<v<>>v><v^^^>^^^<<vv^><^^v>v>^<^>v^><<vvv>v^><vv<><^<><^>^v<><<v^<<><>^^^^<<^>>^>^v^>v>^<<^>vv^vv^v<>^<<^>v<^^<<v<v<<<^>vv^>><>v>><><v>v><v^><vvv>vv<<vvv>v^<<^v<^<><<^v>v<>>vv<<v^>v>v<<>>^vv^<^^^<^v>>^<vv>^<v>><>v>^^<<v^<>>>>>v^v>><>v^>>^<>>^<^vvv^^^<^v<><vvv^>^>v><<v>>^v>v<v>v^<v>v>^<>vvv>vvv^^<>vv>^^^^^>v<<^v<>>>><<<>>><vv>>^v^^v<v^>>>^>^v<^v>^v<>vv<><vvv^v<<<<v<vv>vv^<^vvv<^v>v^^vv<^>>>^^>>^^><>^>>v<>>>^^<<v<^<<<<<^^<v^^^<<>><<<^>^v^>vv<>>>^^v><<>^^^^<vvv><^^<>>>^><<^>><v>^<>^v^<vvvv^>>^><<>><^<v^>>vv^vv<^>>>><^>^v<^<v<^^<^<^><^<>>^<>v^v<<>v>v<>><<v<^v<<<^v<v<>><v<^<^>>v>v>><v^<v><>>>>>v^v>><^<^<v>><v^v>v<>v<v><<<>^^><>^^<^vv^^<>v><><><^>^^v^vv^<><>>>>v><>>^>^<<^<v<v^>v^^<v>>><<^^vv^^>><<^<vvvvv>><^>^>>^vv<><<>v>v^<<<^v<^^<<^vv>v<vvv><^v>vv^vvvv<^>^v^<<<<^v<<<>^vvv>^v><<>>v<v<^v^<>v>>^^v^vv>>>^v^^>>^<><><<<<^vv>>>>>v>v^>v<>><<<>^vv>^^^^<^^^>^^^^>^^^v^v><^>^>>>v<v<^<^^<<^v<<^<>vvv^^^^v^<<>vv>^^>>><^^v<^<<<v<>v<<><>v<><>^<v<<^>^^>><<v>^^><^^v<^<v^<^^<>^<>^v^>>^^v^v^<>v<>^<<<>^v^v>^<vvvv<>v<<>vv^<<>vv>>>>^<v><>>>v^><<>^v>><<>>^^v><^<>>vv^^^>vv^<^^v><v>>vvv^v<^v>v<<^^<>v^^^v^^>><v^>>v^v^vv<^>v^<^>^>v<v^><vvv^>^<>v<<^><^^<vv>v>>vv>v^>>^vvv>>v^>^^>vvv>>v><<>>^^v>v<v<><<<<^^v<^<>^v>><v^^^<>>vvv>v><<v>^^<^vvvv^v>v>^vv>^vv^^v><<>>^^>>v>>>^v><^>v<^^<>vv>v>v^^^>>^^^><<<<>>^>>^<^v<^<^<>^><v<<v>v<>^>>^<<v^^<v^vvvvv>>v^>>^^^<^^<><<><><>^v>vvv^>^^>v<^^>^<<^v^^^><>><<v<^^^<<<<>><>><<^^v><v^<<^v<v><<>^<v>^>^v>vv>><v^<^<v<v<v><^^^^>>><^<><^v^v<<<^>vv^<v^>^^v^>>><<<<^<>>><v>>>vv^>^^<v^v>>>v^<^<>vv>^v^^><<<v>v>v>><>>>v<^>^<>>^^<v^<<^<v^>><^v^><><v><><v^vvv<<>v>>><<><v>v<>>><^<^^v<v>^<<>^v>^>^>^^<^^><^>>>>><^^>vv>^<^^<><^>^<^^><^<v>v^>><^>^^^>>v^v<^>>^<v^<>^><><v>>^v<v^^^^v<^vv><^v>>^^^<>^<^<^>vv^v<<>vv>^<>v>^>^>vv^v<vv<^^^v<v>v>v^<^^^v><v<<<^^<><^^>>>><<^^v<<^>v<<vv^^^vv^vv^<v><>^v<v>>><vv^v<v^>>>>^<<<vv^>>v>^><<><<^<^><<vv^>v^>><>v^<<<>v^><>><<>>v><>v^<v><>^v>>><><>>>^vvv^v>vv>>>^^v^><<v<>>^^^v^^><<^v<><><v<<v<v<><<<v^<^^^<>v^^v<^^<<^>v<<v><^<<<<>><>^v>^<>^<^^v^vvv>^^<>^>><v^^vv^<>^<><<^^^v<^^^>>^^v>^>^<^>v><<^<>^v<><vv^vv<><<<<<<v<<v<<vv^<<^<^vvvv><v^v^v<>>>vvvvv^<vv^<^<>vv>^<><<v><>v^^<v<>>>vvv^><^<^>v^^<v>^<>>>^^v^<vv<<<<^><v<<<>v<<<v<>>^^^>^><>v>^v^>^<v^^><^v^^<^v^^>^v>>^^^<<><><<<>v>><^><>>>vvvv>v>>v>^^^^v<><vv<^<v^v>>^^vv<^>vvv>^v>>><v<v<v^<^>^^<vvv<vv<v>>^vv>^<<^<^<v>v^<vv^^^v>vv<v><v><v>^<v>>vv<>v>^^>v^^^<>v<>v^v<>^<><v><^>^<v^v><<^v^v^v<<v><<^^<^vv>^<^v><>v>><v^v^>><><><<<v<>v<^vv>v<v<<>^vvvvv^<<<^<vv><<><>v^<^v<<<^>v>v<v^<<^>v<<^<v><<<^>vv>v>^<^^v>>>><>vv>>vv>vvv<>^^<>^v^<>vvv<^^^vv>v><<<<vv^v><v^<^<<<><v<>^><<>^>v<^^<<>v>>v<<>><^^<<<^<^vv^^>v>v<>^^>>^v^vvv>^v^>v>>v>v>v>>vv^<><<<<>v^^>vv<^^v>>v<vv<^>>^<>^^v<><vv^<><v><v<<v^v<^^<^v^v<>v<<><vvv><<<^<^^<<>>^v>>>^v>>>v<>>^><<<><><<<v<vv<^<>v^^v^^>^<<^^^v^>^<<^>^>^>>>>v<v<v<>vv<<vv^<<^<vv>^^<^<<>><^v><><>^<v><v^>^v>^<^>^^><v><<^<v^^<<^><><v>v<>>><<^><v<^vvv^<<<>><<>^v^^><vv>vv<>^>^>vv<>v^<^<>vv><<>^<v<vv<^<^<><^vv<<^>>>v<>><<>>>^^^^<<^v>>v<vv>^^>v<v<vv^><<><>>>v>>^^v<^v^^>>v^<>>v^>><^<^^v<v<><<><>>^<>><^v<^^^^><>^>vv>>^vv<<>v<<<<<<><<<><<>><v><^^^<>>v<^><^vvv<>^>^^v>^<v><^v^vv^<<>v<<<<v>^vv>>v>vv<<^>^<>>vvv^<v<><>><>^^^^vvvvvvv<<>v<^><^^>vv^^<v<<^^<vvv<v<v<<>><<><v^^>><^<>^v^vv<<v<v<>><<>>>>>^vv<><v<>v><v>v>><v<v^vvvvv<><>v>>v<><<<^^<>^<^^<v>v^<vv>^vv^<>^<<^<vv><v<v>>v>^<>v^<<v^<v>^v<>><v>>>>^<<^^^v<^<>><^<><v>>vv^>^<^<^>>v^>^^^^>vvvvv>^v<^><^^<^^>^<^^^^^^^>v>>vv>v^^^v^^^<>v><^>>>v>^>^>^>vv<vv<^^>>^>>>v<>v><<^<<v^>^>>>>^^><^^<v<<<<>>v>v^v^^<>><v<^<<<<v^^^^<v<<<^>v>^^<vv<^^^^^v>^v^<v><>>^^>^v>^>^vv^v>v>v^>v>^>>^^^^>>^>>^><>><v>v>>><<^v^v^>^>^>>vv><<^>v<v<v^<<>>^v<<^v<<^><^>>^<v>^>vv>v>^^^>v^^<^<^^>vv>^^><v>>^v>^v<<^^^<<^v^>^<<^>vv^>>^<^v><<>v><^^^<^^>>vv>^vv>><^<<<^>vv^v>v<^<<<^<^<<><^^>>>v^<^^^>^<><^v>>^<<v<^v>>v^<^<^<^^^<v^><<vvv^<^v^vv^vv<v<<v<^<>^v>^^^<^^v<v<v><<<^<>^^^^v>v^v^v^v<v><v>>^v><vv^^^v>><<v^vvvv<<<^v<<><^>^<v^^v<>vvvv^vv<>^v<><>^^<>>vvv<^>><v^<<>v>v<>^v^>v^>><<>>^^<^v<>>^>^><>>^<v<v^^<^v><v^<v<><><^<<><v^v<<>vv<v<v<^>>><>vv^^<><<v<^^<<^<><^^^>^>>>^<^>>>^>><^^^<^v^^^v^v^v>v>v><vv>><vvv<<v><><^^>^v<v>><v><^><^<<>v^vv^v><^vv>^>>v<vv><^<^^v<^^vv<vv<v<v>v><v<vv<<>^^v^^v<<<^<>v^^^<><>>><^>v^^^v^vv<<<^>>v><^>v^<>>>>^<>^^vvv^^<><^>^^<><>^vvv^^<vv^>vv^^^^v<>vv<^^^v<<>><<vvvvv>v>^^^vv>><v><v<>vvvv<v^><^<>^>^<>v>v>v^vvvv<><^v>>>^^>><vvv<>^>^v^<vvv>v^vv^vv><>><>v^^v^vv<^v>vv>>v<v><^<<^v<>>^vv^<v>v><v>v>^v>^<v>^<<^>vv>v<^<^vv^<^><<<v<<^^vv<vvv><>v>v<vv^<><><^vvv>>vv<^^^v><^v><<^>^^v>^<>><v<>>^^<<<v><>^>^><vvvv<>^<<<><<<^<>>v^vv^>><^vv^^>^<v^<v>><^^>>>^v>^v<>^v<><^><vv>v^^^<^>>^<<^<^><<<^^<v<<^vv<^<>v<^<<^^<v<vv<<><v<v^<>^<>v>>v<^v>v<>^^vvv<>vv^v^<><v^vv^<^v^v><>^><v^<>>^^^<>>vv^<v>^^v><v<^>^^^^^^><>>vvv<<><><v<^>v<>v^v<<<<>v^>>>>^v>^^<v^>v><v^<^^v<<<<v<<<>^v<^>^v>v^^>v^^vvv>vv<>^>v><v<>^<vv><>>><<^>>><<v>v^^<^<<<<v^<>>>v<<<^v^vv<>^v>v<<<<>^^>><v><>v<v><^^>><>^>^>v>>><v>^vvvv<><><^>>^v^><<>^v<><><^><<<>v^^>v>^>v^<v^vv<>><^vv^^>^^><vv<<>v>v^^>><v^>^<^<>>>vv<>^>v>v^<>v<^<<v>>>^<>v^>v>>vv^^<>>v<v<<^<>v>v^<^^^>v^^>v>v>vv<^<v>v^^><<<v<><>^^<>v>v>^^v>v>v^v>>^<v^v>><>^^>^<>>>^vv^><v^<^>v^>^v><^>^^^vv^^v<>vv<>>^><<^v>^v^>>v>^v^<<^^^vv<<vvv>^vv^v<<<v^^<<><vv<>>^^vv>^^^vv>><><v>v<^v^>>>vv^><>><v<^v<>^><v<^^^^>><^<>v>^v<^vv>v>v<^<>v>v>^<vv>v<^>vvv<v^<vv<vv<>v>^><v^v<>>>>>v>><^v<>v>^v><v^v^vv<>^<vvv^>><v^<vvv^^<^vvv^v^<>><v>v^^v<><>v^^^v<<<^><v<<<>><<vv<<><vvv^v>>v^v<v^>>><<v<>^v><>vv<<v>v^vv>v^v<^<vv<><><^v>^<vv>v^^>>^^^><vv<><^>>>^<v^<<^^>^>vv^><v<vvv>^^>>>^><<vv>vv>^<>>^^><^v><<>^<<<v^>^
donne 1408 lumières allumées.
Pour générer des entrées, vous pouvez utiliser le script Python suivant:
import random
length = random.randint(15, 10000)
walk = ''
chars = ['v', '<', '>', '^']
for i in range(length):
walk += random.choice(chars)
print(walk)
Score de code-golf standard , gagnant est le plus petit nombre d'octets.
Réponses:
MATL ,
19181713 octets5 octets de moins grâce à l'idée de @ LeakyNun (voir sa réponse ) d'utiliser l'unité imaginaire comme base pour une exponentiation.
Essayez-le en ligne! Cas de test: 1 , 2 .
Explication
Le code trace le chemin à l'aide d'étapes unitaires dans le plan complexe. Ensuite, il compte combien de fois chaque poste a été visité et indique combien de postes ont été visités un nombre impair de fois.
la source
0+1i 0-1i -1+0i 1+0i
i
au lieu dej
?Python, 68 octets
25 octets grâce à Sp3000.
2 octets grâce à l'idée de Luis Mendo de prendre le module avec 11.
17 octets grâce à xnor.
Ideone ça!
la source
d^={p}
etlen(d)
.Java 8,
169130127 octetsMerci à Leaky Nun d’avoir économisé
2932 octets.Ungolfed (sorta):
la source
for(char c:s){p+=c<61?-1:c<63?1:c<95?-l:l;m[p]^=2;r+=m[p]-1;}
peut êtrefor(int c:s)r+=(m[p+=c<61?-1:c<63?1:c<95?-l:l]^=2)-1;
pour économiser 8 octets: Essayez-le en ligne.Gelée , 13 octets
Un port de réponse de Luis Mendo dans MATL
Essayez-le en ligne!
Crédits du
œ^/
tour à Dennisla source
Perl, 49 octets
Inclut +1 pour
-p
Run avec la chaîne de contrôle sur STDINlights.pl
:Si l'entrée est limitée à 10000 octets, cela réduit à
44+1
:la source
TSQL,
238235203191 octetsCréation d'une table en mémoire à l'aide de SQL récursif. Sélection et calcul à partir de cette table (code à une ligne).
Golfé:
Ungolfed:
Violon
la source
Mathematica, 64 octets
Un port de réponse MATL de Luis Mendo .
la source
SQF , 160 octets
Utilisation du format de fonction en tant que fichier:
Appeler comme:
"STRING" call NAME_OF_COMPILED_FUNCTION
Ungolfed:
la source
compile "CODE"
.Python:
207189181 octetsL'entrée est une chaîne.
Merci à @LuisMendo pour m'avoir signalé que je ne peux réellement mettre en retrait que d'un espace. Darn mes professeurs de Python pour m'avoir dit de toujours le faire par incréments de quatre.
Le corriger de manière à ce que l'entrée soit obtenue plutôt que de supposer stocké m'a réellement sauvé 8 octets.
la source
input()
et de le stocker quelque partRuby, 64 + 6 = 70 octets
+6 octets pour le
-rset
drapeau.Un portage direct de la réponse Python de Leaky Nun .
Voir sur repl.it: https://repl.it/Cnjy
la source
-rset
drapeau ne compte que 4 octets.-rset
drapeau compte désormais pour 0 octet.-e
être "libre" en Ruby signifie-n
-t-il 1 octet au lieu de 3 mais les personnes qui ne le savent pas pourraient rapporter des sous-comptes différents) mais à chacun leur posséder. BTW,Set[]
enregistre 2 octets surSet.new
.rset
réponse:bytes.map
enregistre 4 octets,each_char
car vous pouvez prendre l'ord
appel.R,
17215613710196 octetsUtiliser l'idée de plan complexe de @ LeakyNun.
non-golfé
la source
Javascript (ES6),
979385 octetsEDIT: -8 octets, merci à Neil
Tester:
la source
[...i]
au lieu dei.split('')
. Aussi, je pense que vous pouvez écrire en(p=1E6,v=[-1,1,-1E3,1E3],0)
tant que0,p=1E6,v=[-1,1,-1E3,1E3]
.^
soit le premier,search
enregistre un octetindexOf
. (Vous avez besoin de^
d'être d' abord parce quesearch
traite^
comme métacaractère regexp.)S=
partie.S=
") est facultative (vous pouvez simplement appeler la fonction comme(«function code here»)(«argument»)
).PowerShell , 136 octets
Essayez-le en ligne!
Je pense qu'il y a plus à optimiser ici, mais c'est le plus bas que j'ai pour l'instant.
Plus facile à lire:
Explication: L'entrée est remplacée par un tableau de caractères et chaque élément est associé à l'un des 4 premiers cas de commutation pour incrémenter les coordonnées x ou y. Tout correspond au 5ème cas où nous décidons si une lumière est allumée ou éteinte. La longueur à la fin détermine le nombre total de commutateurs activés.
Remarque: La virgule dans les coordonnées est nécessaire pour éviter les collisions telles que (10,10) et (101,0).
la source
-ne
fonctionne avec tableau 115 octetsPowerShell ,
96 à95 octetsEssayez-le en ligne!
Déroulé:
PowerShell ,
112109 octetsUn port de réponse MATL de Luis Mendo .
Essayez-le en ligne!
la source
En fait ,
2423 octetsCeci est un port de la réponse MATL de Luis Mendo . Les suggestions de golf sont les bienvenues. Essayez-le en ligne!
Edit: Un octet grâce à Leaky Nun.
Ungolfing:
la source
:11
tant que4P
, je suis incapable de trouver un conseil de golfC,
203190189 octetsO (n ^ 2) avec O (1) algorithme de mémoire.
Il boucle sur chaque position, vérifie si cette position se produit plus tôt et, si ce n’est pas le cas, vérifie si cette position se produit une quantité de temps pair / impair par la suite, en l’ajoutant au total.
la source
Perl,
102 98 9190 (89 + -n) octetsLisible:
la source
for/./g
au lieu dewhile
, ce qui vous permet d’utiliserord()
au lieu deord($&)
.say
au lieu deprint
(depuis-M5.010
ou-E
sont gratuits) et utiliser-n
flag (coût 1 octet) au lieu de le faire$_=<>
.C #
210205139138135128 128113 octetsExplication
Count
àSum
la source
Distinct()
plutôt queGroupBy(z=>z)
? Vous pouvez également utiliserSum(g=>g.Count()%2)
, puisque c'est toujours 0 ou 1, je devrais penser.(x+=c%6%3-1)+"."+(y-=c%18/5-1)
(ajoutez simplement un nombre calculé à partir du caractère avec un module stupide, etc.). Je n'ai pas testé, je vous laisserai réparer si c'est cassé;) Cela devrait économiser beaucoup d'octets si je ne me suis pas trompé! (Et il y a sûrement une paire d'expressions moins chères, mais ce sont exactement ce que je pourrais trouver au cours des 20 dernières minutes.)Distinct()
ne fonctionne pas (sauf si quelque chose me manque) car il renvoie une chaîne de chaque chaîne, au lieu de me fournir un décompte des occurrences.c%6%3-1
cartes simplement les valeurs ASCII de<>v^
à-1,1,0,0
(changementx
, note les valeurs zéro) et l'autre expression produit un résultat similaire poury
. Il y a probablement de meilleures expressions (je n'avais pas l'air très difficile), une goutte de ternaire pourrait porter ses fruits. Ce fut mon premier effort, ce qui rend peut-être plus évident ce qui se passe:(c<61?--x:c<63?++x:x)+"."+(c>95?--y:c>93?++y:y)
(mais évidemment, c'est un peu plus long!)Perl 6 , 47 octets
Essayez-le en ligne!
(-i, *i, ... *)
est la séquence répétitive infinie-i
,1
,i
,-1
, ...[.ords X% 11]
Tranches dans cette séquence avec les valeurs ordinales des caractères dans la chaîne d'entrée, modulo 11.[\+]
effectue une réduction triangulaire (ou "scan") sur ces valeurs, produisant une liste des coordonnées visitées sur le plan complexe.bag()
crée unBag
contenant ces coordonnées, chacune ayant une multiplicité associée (le nombre de fois où elle est apparue dans la liste).{*}
récupère toutes les multiplicités du sac.X% 2
croise ces multiplicités avec le nombre en2
utilisant l'opérateur de module%
. Les multiplicités impaires conduisent à un1
, les multiplicités paires donnent un0
.sum
résume ces restes.la source
Common Lisp ,
198 octets186 octetsSolution:
Exécuter!
Explication:
Remarque: i (entrée) est défini comme test:
la source
(99 1 -99 -1)
pour raser 2 octets ..K (oK) ,
372927 octetsSolution:
Essayez-le en ligne!
Explication:
Créer une liste d'étapes, créer un chemin, un groupe, compter chaque répétition, si mod 2 vaut 0, puis éteint, sinon activé. Je me sentais très AdventOfCode-ish.
Remarques:
la source
1 -1 -99 99"^v<>"?
->-99 0 99 -1 1@5!
+/2!.#:'
->+/~=/'^
^
?Krrp , 137 octets
Essayez-le en ligne!
Explication
Essayez-le en ligne!
Malheureusement, krrp ne dispose que d’une seule implémentation plutôt lente, ce qui rend les tests longs difficiles à vérifier.
krrp Conversion de chaîne .
la source
APL (Dyalog Unicode) ,
21SBCS de 20 octetsEssayez-le en ligne!
les usages
⎕io←1
⎕
contribution'^<v'⍳
trouve l'index de chaque caractère d'entrée parmi'^<v'
, c'est-à-dire^
devient 1,<
2,v
3 et tout le reste 40j1*
i à la puissance (la constante imaginaire)+\
sommes partielles⊢⌸
matrice dans laquelle chaque ligne est la liste des occurrences (indices) d'une somme partielle unique; rembourré avec des 0 pour le rendre rectangulaire×
signum - tous les indices deviennent 1, le remplissage reste 0≠/
somme mod 2 pour chaque ligne+/
sommela source
Ruby , 67 octets
Inspiré par la solution C d'Orlp. Assemble une liste de toutes les positions visitées, puis pour chaque unique (en utilisant l'intersection setwise
(d&d)
car elle enregistre un octetd.uniq
), comptez celles qui ont un nombre impair d'occurrences (techniquement, associez-les aux occurrences% 2 et additionnez-les , puisque cela fait la même chose)Essayez-le en ligne!
la source