Eh, Doorknob'un GitHub, Reddit ve diğer sitelerdeki kullanıcı adının KeyboardFire olduğu ortaya çıktı . Bu bana bir fikir verir ...
Görev
Özel klavyeler üreten bir şirket olan KeyboardFire Inc. Ve "özel" derken, bir tuşa her basışınızda evinizdeki bir şeyin yandığı anlamına gelir! Yeni KeyboardFire Doorknob serisi ile, ateşe giren nesneler kapı kollarıdır.
Bununla birlikte , aptal hükümet düzenlemeleri nedeniyle, kullanıcılarınızın evlerinde hangi kapı kollarının ateş yakacağını bilmeleri gerekir.
Bu ASCII QWERTY klavyenin bir kısmının resmini düşünün:
1|2|3|4|5|6|7|8|9|0
q|w|e|r|t|y|u|i|o|p
a|s|d|f|g|h|j|k|l
z|x|c|v|b|n|m
( |
Anahtarlar arasındaki sınırları temsil eder.)
Bu aralık, her karakter bir tür "grafiği", tam olarak bu ASCII çizim tedavi edebilir [a-z0-9]
bir x (yatay) ve y (dik) indeksine sahiptir, burada (0,0)
ise 1
. Örneğin, harf d
koordinatlara sahiptir (2,6)
(borular ve boşluklar koordinat hesaplamasına dahil edilir).
Şimdi her kullanıcının evini düşünelim. Her ev 20x4 ASCII sanatı olarak yukarıdan aşağıya doğru çekilebilir (bu dünyada yıkıcı klavyeler satmanın yasal olduğu yerlerde, her ev aynı boyuttadır). D
Her kapı kolunun evdeki pozisyonlarını işaretlemek için 'ler' i kullanabiliriz . İşte bir örnek:
D D D D
D
D D
Buna "ev haritası" diyeceğiz. (Evet, çok fazla kapı kolu var!)
Herhangi bir tuşa basmak, en yakın kapı düğmesini yakacak. Örneğin, mektubun önceki koordinatlarını alırsak d
, en yakın kapı tokmağı (Manhattan mesafesine göre) koordinatlardadır (1,4)
. Bu, mektuba d
isabet ettiğinde yanacak olan kapı kolu . Yanan kapı kolunu bir ile işaretlemek F
isteseydik sonuç şöyle olurdu:
D D D D
F
D D
Özellikleri
Programınız iki girdi alacaktır:
- Desene uyan bir dize
[a-z0-9]+
. - Bir ev haritası. Bu bir dize, bir dize listesi veya eşdeğeri olabilir.
İpin her harfinden geçip ilgili kapı kolunu yakmanız gerekir (mektubunu an olarak değiştirin F
). En yakın kapı tokmağı zaten yanıyorsa, olduğu gibi bırakın. Bu yöntemle yanabilecek 1'den fazla kapı kolu varsa, hangisini isterseniz yakabilirsiniz.
Tüm dizge bu şekilde işlendikten sonra, sonuçtaki ev haritasını yazdırmanız gerekir.
Code-golf, yani en kısa program kazanır. Standart boşluklar her zamanki gibi yasaklandı.
Örnek
Dize:
helloworld123
Ev haritası:
D D D D
D
D D
Olası sonuçlar:
F F F D
F
D F
Veya:
F D F D
F
D F
Veya:
F F D D
F
F F
Veya:
F D D D
F
F F
EDIT: Uh ... bir +50 lütufta olsa bile bir cevabım var mı? Yönergeleri karmaşık / belirsiz bulursanız, yorumlarınızı veya herhangi bir şeyi gönderirseniz sevinirim ... veya yanlış bir şey yapıyorum ...
2 EDIT: Ödül bir gün içinde sona eriyor! Başka bir şey gönder! Lütfen! LÜTFEN!!!! :(
d
Akıl karıştırıcı bulduğum birkaç şey var: 1) Neden kodları (2, 6) değil (2, 2)? 2) Örnek neden bu kadar çok olası cevaba sahip? 3) Ateşin nasıl yanacağını açıkladığınızda neden konuşuyorsunuzd
? Neden sadece düpedüz, basmanına
bir evi ateşe vereceğini söylemiyorsunuz ?d
Bunu da mı yapıyor?