Size iki giriş parçası verilecektir: koşu parkurunu tanımlayan çalışma uzunluğu kodlu formatta bir dize ve başlayacak şeridi temsil eden büyük harf. Örneğin, "3a4A6b5B" dizesi "aaaAAAAbbbbbbBBBBB" ye genişler. Daha sonra, bir parça oluşturmak için genişletilmiş dizeyi aşağıdaki gibi kullanırsınız:
A) aaaAAAA
B) bbbbbbBBBBB
Bu iki şeritli bir parkur. Küçük harfler havayı temsil eder. Canlı yayın yapamazsınız! Büyük harfler koşabileceğiniz yolu temsil eder. Bu meydan okuma için hedefiniz, büyük bir harf verildiğinde, o şeritte başlayan bir yarışçının ne kadar uzağa gidebileceğidir. Yarışçıların hemen üstünde veya altında bir yol varsa şerit değiştirmesine izin verilir. Ayrıca geriye doğru koşmalarına izin verilir! Bu parçada çıkış herhangi bir harf girişi için 0'dır , çünkü parçaların hiçbiri 1. konumda çalıştırılabilir bir yola sahip değildir.
Örnekler:
Giriş: "4A5B4c3C", "A"
Bu kod şöyle görünen bir parçaya genişler:
A) AAAA
B) BBBBB
C) ccccCCC
Bu örnek için çıktı 7'dir , çünkü A şeridinde başlayan bir koşucu, B şeridine ve daha sonra C şeridine gidebilir ve 7. pozisyonda sonlanabilir.
Giriş: "4A2B3D", "D"
Izlemek:
A) AAAA
B) BB
C)
D) DDD
Çıkış 3'tür , çünkü D şeridinde başlayan bir koşucunun B veya A şeridine ulaşması mümkün değildir.
Giriş: "4A4a4A3b6B5C", "A"
Izlemek:
A) AAAAaaaaAAAA
B) bbbBBBBBB
C) CCCCC
Çıkış 12'dir , çünkü A'daki koşucu B'ye geçebilir ve sonunda A'ya geri dönebilir. "C" için maksimum mesafe de 12'dir. "B" için 0'dır.
Giriş: "12M4n10N11O", "M"
Izlemek:
M) MMMMMMMMMMMM
N) nnnnNNNNNNNNNN
O) OOOOOOOOOOO
Çok basamaklı çalışma uzunluklarına sahip basit bir örnek. Çıktı 14 .
Giriş: "4A5B1b2B4c3C", "A"
Izlemek:
A) AAAA
B) BBBBBbBB
C) ccccCCC
Çıkış 8'dir , çünkü A'daki koşucu B'ye, sonra C'ye inebilir, sonra B'ye geri dönebilir. (Bu örnek için FryAmTheEggman'a teşekkür ederiz.)
Giriş: "1a2A2a2B1c1C1d3D", "B"
Izlemek:
A)aAAaa
B)BB
C)cC
D)dDDD
Çıktı 4'tür . Koşucu, her iki yolu da kontrol etmelidir, hangisi daha da ileri gider. (Bu örnek için user81655'e teşekkürler.)
Giriş: "2A1b1B2C1D3E", "A"
Izlemek:
A) AA
B) bB
C) CC
D) D
E) EEE
Çıktı 3 . En uzak hedefe ulaşmak için geriye doğru koşmalısınız. (Bir kez daha, bu örnek için user81655'e teşekkürler.)
Notlar:
- Bir parkurun belirli bir konumda bir harfi yoksa, hava da sayılır. Bu nedenle, giriş "Q" ise ve "Q" şeridine hiçbir yol yerleştirilmemişse, çıkış 0 olmalıdır .
- İki adet girdi vardır. Birincisi, çalışma uzunluğu kodlu bir dizedir. İkincisi büyük harftir (bunun için dize veya karakter veri türü kullanabilirsiniz.) Okunabilirlik için bu girişler arasında makul bir ayırıcı (boşluk, yeni satır, sekme, virgül, noktalı virgül) olmalıdır.
- Çalışma uzunluğu kodlu dize öğeleri her zaman alfabetik sırayla listeler
- Bir şeridin tüm uzunluğu en uzun 1000 olabilir. Bu nedenle, mümkün olan en büyük çıktı 1000'dir.
Parça Üreticisi:
İlk cevabımızın onuruna, bir parça üreticisi. Mevcut cevapları bulmak için bir şey bulmaya çalışın! (Not: Jeneratörün bir hata mesajı göstermemesi, parça kodunuzun mutlaka geçerli olduğu anlamına gelmez. Doğru form için yukarıdaki örneklere bakın.)
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
giderilip giderilemeyeceğini mi merak ediyorsunuz ? Örneğin, ekleme 0c
? Değilse, söz 1A1Z
verildiği zaman , BY şeritlerinin var olduğu varsayılır (ancak boştur)?
12M4n10N11O
Örneğin, çıkış 14, daha sonra yanlıştır: 25 bir uzunluk için C0 en uzun yol M0 başlar ve biter,