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 dkoordinatlara 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). DHer 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 disabet ettiğinde yanacak olan kapı kolu . Yanan kapı kolunu bir ile işaretlemek Fisteseydik 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!!!! :(
dAkı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ınabir evi ateşe vereceğini söylemiyorsunuz ?dBunu da mı yapıyor?