Vous recevrez deux éléments d'entrée: une chaîne au format codé de longueur définissant la piste de course et une lettre majuscule représentant la voie à partir de laquelle. Par exemple, la chaîne "3a4A6b5B" se développe en "aaaAAAAbbbbbbBBBBB". Vous utilisez ensuite la chaîne développée pour créer une piste, en tant que telle:
A) aaaAAAA
B) bbbbbbBBBBB
Il s'agit d'une piste à deux voies. Les lettres minuscules représentent l'air. Vous ne pouvez pas courir sur l'air! Les lettres majuscules représentent la route sur laquelle vous pouvez courir. Votre objectif pour ce défi est, compte tenu d'une lettre majuscule, de montrer jusqu'où un coureur commençant sur cette voie pourrait courir. Les coureurs sont autorisés à changer de voie s'il y a un morceau de route juste au-dessus ou en dessous d'eux. Ils sont également autorisés à reculer! Sur cette piste particulière, la sortie est 0 pour toute entrée de lettre, car aucune des pistes n'a de route exécutable à la position 1.
Exemples:
Entrée: "4A5B4c3C", "A"
Ce code se développe en une piste qui ressemble à ceci:
A) AAAA
B) BBBBB
C) ccccCCC
La sortie de cet exemple est 7 , car un coureur commençant sur la voie A pourrait descendre vers la voie B, puis la voie C, et finir à la 7e position.
Entrée: "4A2B3D", "D"
Piste:
A) AAAA
B) BB
C)
D) DDD
La sortie est 3 , car un coureur commençant sur la voie D n'a aucun moyen de se rendre sur la voie B ou A
Entrée: "4A4a4A3b6B5C", "A"
Piste:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
La sortie est 12 , car le coureur sur A peut basculer sur B, puis revenir sur A à la fin. La distance maximale pour "C" est également de 12. Pour "B", elle est de 0.
Entrée: "12M4n10N11O", "M"
Piste:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Exemple simple avec des longueurs d'exécution à plusieurs chiffres. La sortie est 14 .
Entrée: "4A5B1b2B4c3C", "A"
Piste:
A) AAAA
B) BBBBBbBB
C) ccccCCC
La sortie est 8 , car le coureur en A peut descendre en B, puis en C, puis revenir en B. (Merci à FryAmTheEggman pour cet exemple.)
Entrée: "1a2A2a2B1c1C1d3D", "B"
Piste:
A)aAAaa
B)BB
C)cC
D)dDDD
La sortie est 4 . Le coureur doit vérifier les deux chemins, voir lequel va plus loin. (Merci à user81655 pour cet exemple.)
Entrée: "2A1b1B2C1D3E", "A"
Piste:
A) AA
B) bB
C) CC
D) D
E) EEE
La sortie est 3 . Vous devez courir en arrière pour atteindre la destination la plus éloignée. (Encore une fois, merci à user81655 pour cet exemple.)
Remarques:
- Si une piste n'a pas de lettre à une certaine position, cela compte aussi comme de l'air. Ainsi, si l'entrée est "Q" et qu'aucune route n'a été placée sur la voie "Q", la sortie doit être 0 .
- Il y a deux éléments d'entrée. Le premier est une chaîne codée de longueur. La seconde est une lettre majuscule (vous pouvez utiliser le type de données chaîne ou char pour cela.) Pour la lisibilité, il devrait y avoir un séparateur raisonnable entre ces entrées (espace, nouvelle ligne, tabulation, virgule, point-virgule).
- La chaîne encodée de longueur d'exécution listera toujours les éléments dans l'ordre alphabétique
- La longueur la plus longue d'une voie peut être de 1000. Par conséquent, la sortie la plus élevée possible est de 1000.
Générateur de piste:
En l'honneur de notre première réponse, voici un générateur de piste. Essayez de trouver quelque chose pour étouffer les réponses actuelles! (Remarque: ce n'est pas parce que le générateur n'affiche pas de message d'erreur que votre code de piste est nécessairement valide. Voir les exemples ci-dessus pour la forme appropriée.)
function reset() {
var t = document.getElementById("track");
t.innerHTML = "";
for(var i = 0;i<26;i++) {
var c = String.fromCharCode(i+65);
t.innerHTML += "<div><span>"+c+") </span><span id='"+c+"'></span></div>";
}
}
function rand() {
var track = "";
for(var i = 0;i<26;i++) {
var blocks = Math.floor(Math.random()*4);
var start = Math.floor(Math.random()*2);
for(var j = 0;j<blocks;j++) {
var letter = String.fromCharCode(65+i+32*((start+j)%2));
var length = Math.floor(Math.random()*4)+1;
track += length+letter;
}
}
document.getElementById("code").value = track;
}
function gen() {
var s = document.getElementById("code").value;
var check = s.match(/(\d+[A-Za-z])+/);
if(check == null || check[0]!=s) {
alert("Invalid Track");
return false;
}
reset();
var n = s.match(/\d+/g);
var o = s.match(/[A-Za-z]/g);
for(var i = 0;i<n.length;i++) {
var c = o[i].toUpperCase();
document.getElementById(c).textContent += o[i].repeat(n[i]);
}
return true;
}
<body onload="reset()">
Track: <input type="text" id="code" size="75%" /><input type="submit" onclick="gen()" /><input type="button" value="Random Track" onclick="rand()" /><code id="track"/>
</body>
la source
4A2B3D
pourrait être supprimée? Par exemple, ajouter0c
? Si ce n'est pas le cas, est-il prévu au moment de dire1A1Z
, les voies BY sont supposées exister (mais sont vides)?12M4n10N11O
exemple, sortie 14, est alors faux: le chemin le plus long commence à M0 et se termine à C0, pour une longueur de 25.Réponses:
Perl,
231219203192189 189 octetscomprend +1 pour
-p
Moins golfé:
Fonctionnement
Stockez le code ci-dessus dans un fichier (par exemple
231.pl
). Entrée sous forme de(\d+\w)+ *\w
. Exemple: saisie d'une piste4A5B4c3C
et d'une voieA
:Suite de tests
(non golfé)
@L=map{[/./g]}@L
post - traitement.if
utilisantmap
au lieu defor
.la source
JavaScript (ES6),
298334 octetsExplication
Fondamentalement, cette solution traite la piste comme un labyrinthe. Il trouve où se trouvent toutes les tuiles possibles pour le coureur et renvoie la plus grande valeur de l'index X qu'il a trouvé.
La première chose qu'il fait est de décoder la chaîne d'entrée en un tableau de lignes. Au lieu d'utiliser des lettres, il transforme une lettre majuscule en a
1
et une lettre minuscule en a0
. La carte résultante ressemblera à ceci:Après cela, il crée la première tuile de la piste de départ a
2
(seulement si c'est déjà le cas1
) et boucle à travers chaque tuile en vérifiant les tuiles adjacentes pour a2
. Si a1
a un adjacent,2
il devient a2
. La carte ci-dessus deviendra ceci si le coureur a commencé sur la première ligne:L'indice X le plus élevé pour a
2
devient le résultat.J'ai fait une erreur très mineure lorsque j'ai fait la version initiale de cela et cela m'a coûté 36 octets pour le pirater jusqu'à ce qu'il fonctionne, donc il y a probablement beaucoup d'améliorations qui pourraient être apportées à cela. *soupir*
Non golfé
Tester
Bonus: la sortie inclut la carte analysée!
la source