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>
4A2B3D
pourrait être supprimée? Par exemple, ajouter 0c
? Si ce n'est pas le cas, est-il prévu au moment de dire 1A1Z
, 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.