Вам будуть надані два фрагменти введення: рядок у кодованому форматом довжині довжини, що визначає бігову доріжку, і велика літера, що представляє смугу, з якої слід починати. Наприклад, рядок "3a4A6b5B" розширюється на "aaaAAAAbbbbbbbBBBBB". Потім ви використовуєте розширений рядок для створення доріжки як такої:
A) aaaAAAA
B) bbbbbbBBBBB
Це доріжка з двома смугами. Малі літери представляють повітря. Не можна бігати в ефір! Великі літери являють собою дорогу, по якій можна пробігати. Ваша мета цього виклику полягає в тому, щоб з великої літери вивести, наскільки далеко може пробігти гонщик, що починається на цій смузі. Гонщикам дозволено перемикати смуги руху, якщо над ними або під ними знаходиться ділянка дороги. Їм також дозволяється бігати назад! На цій конкретній доріжці вихід дорівнює 0 для будь-якого введення літери, оскільки жодна з доріжок не має дороги, яку можна виконати в положенні 1.
Приклади:
Вхід: "4A5B4c3C", "A"
Цей код розширюється на композицію, яка виглядає приблизно так:
A) AAAA
B) BBBBB
C) ccccCCC
Вихід для цього прикладу дорівнює 7 , тому що бігун, що починається на смузі A, може рухатися вниз до смуги B, а потім смуги C і опинятися на 7-й позиції.
Вхід: "4A2B3D", "D"
Доріжка:
A) AAAA
B) BB
C)
D) DDD
Вихід 3 , тому що бігун, що починається на смузі D, не має можливості дістатися до смуги B або A
Вхід: "4A4a4A3b6B5C", "A"
Доріжка:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
Вихід 12 , тому що бігун на A може перейти на B, а потім повернутися до A в кінці. Максимальна відстань для "C" також є 12. Для "B" це 0.
Вхід: "12M4n10N11O", "M"
Доріжка:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Простий приклад з багатозначною довжиною пробігу. Вихід 14 .
Вхід: "4A5B1b2B4c3C", "A"
Доріжка:
A) AAAA
B) BBBBBbBB
C) ccccCCC
Вихід 8 , тому що бігун на A може спуститися до B, потім до C, потім повернутися до B. (Дякую FryAmTheEggman за цей приклад.)
Вхід: "1a2A2a2B1c1C1d3D", "B"
Доріжка:
A)aAAaa
B)BB
C)cC
D)dDDD
Вихід 4 . Бігун повинен перевірити обидві стежки, дві бачити, що йде далі. (Завдяки користувачеві81655 за цей приклад.)
Вхід: "2A1b1B2C1D3E", "A"
Доріжка:
A) AA
B) bB
C) CC
D) D
E) EEE
Вихід 3 . Вам потрібно бігти назад, щоб дістатися до самого віддаленого пункту призначення. (Ще раз дякую користувачеві81655 за цей приклад.)
Примітки:
- Якщо доріжка не має літери в певному положенні, це також вважається повітряним. Таким чином, якщо вхід "Q", а дорога не розміщена на смузі "Q", вихід повинен бути 0 .
- Є два фрагменти введення. Перший - це кодований рядок довжиною прогону. Друга - велика літера (для цього можна використовувати тип даних рядка чи знаку.) Для читабельності між цими входами повинен бути розумний роздільник (пробіл, новий рядок, вкладка, кома, крапка з двокрапкою).
- Кодований рядок довжиною виконання буде завжди перераховувати елементи в алфавітному порядку
- Найдовша довжина смуги може становити 1000. Отже, максимально можливий вихід 1000.
Генератор треків:
На честь нашої першої відповіді, ось генератор треків. Спробуйте придумати щось, щоб спотикати поточні відповіді! (Примітка. Тільки тому, що генератор не показує повідомлення про помилку, не означає, що код треку обов'язково дійсний. Див. Вище приклади для належної форми.)
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
бути усунено ? Наприклад, додавання 0c
? Якщо ні, чи очікується, коли скажуть 1A1Z
, що смуги BY передбачається існувати (але порожні)?
12M4n10N11O
Приклад, висновок 14, тоді невірно: найдовший шлях починається в точці М0 і закінчується на C0, при довжині 25