Bu benim kafam:
\ /-- -|
/ -\ | | |
\ \ \ \ |
--\ | \ | |
/ |--| / / |
/|- //--| / |
| | || //\ |
| \ /| // \ |
Tam olarak sekiz kıldan oluşur. Saçım çok uzun. Lütfen her bir ipliği belirttiğim bir uzunlukta kesin.
Giriş
Bu bölümdeki ana cazibe saçın gerçek başıdır. İşte tembel için bir animasyonla birlikte grafik, renk kodlu bir gösterim :
Ve işte bir kıl kümesinin ne olduğu için tam bir özellik :
- Biz arayacak saçların, iplikçikleri , üzerinden yapılacaktır
/
,\
,|
ve-
bundan sonra bilinen, ASCII karakter atomu . - Tüm duyma kafası (birleşik tüm teller)
c
columns 1 ve ≥ 2 olanr
satırlar halinde sütunlar olacaktır .c
r
- Her iplikçik ...
- başın son satırından başlayın (satır
r
- 1). - uzunluğu
l
wherel
2 olduğunda.
- başın son satırından başlayın (satır
- Tellerin aşağıdaki yöntemle ayrıştırılması mümkündür:
- Tellerin altından başlayın. Bu , kök olarak adlandıracağımız bir
/
,|
veya\
atom olacaktır . (Tellerin soldan sağa ayrıştırılması, kök tarafından sıralanması.) - Kökü gösteren atomu bulun.
- Bir
|
atom yukarı ve aşağı işaret eder. Bir-
atom sola ve sağa işaret eder (ancak alt kökte sadece kökler olabileceğinden asla kökü gösteremez). Bir/
atom sola ve sağa işaret eder ve bir\
atom tersini yapar. - Her zaman kök atomu işaret eden tam olarak bir atom olacaktır.
- Bir
- Kullanılmayanları bulunBu atomu işaret eden ve ayrıca bu atomun altında olmayan (saçlar aşağı doğru büyüyemez, ancak yanlar iyidir) atom (henüz herhangi bir ipliğin parçası olmayan bir atom) .
- Sıfır varsa, ipin sonuna ulaştınız!
- Bir tane varsa, bu ipliğin bir sonraki atomudur. Bu atom ile 3. adımı tekrarlayın. (Bu atom artık bir ipin parçası olduğu için 3. adımın amaçları için "kullanılmış" olarak işaretlenmiştir.)
- Kafanın herhangi bir noktasında burada asla birden fazla kullanılmamış atom olmayacak .
- Tellerin altından başlayın. Bu , kök olarak adlandıracağımız bir
Giriş biçimi olacaktır:
- Bir saç başı. Olduğu gibi girilebilir (değişmez satırsonu içeren çok satırlı giriş) veya satırsonu yerine seçtiğiniz bir sınırlayıcı ile girilebilir. Kafanın her zaman bir dikdörtgen olacağını unutmayın; yani sondaki boşluk gerektiği şekilde eklenecektir (sağdaki tuhaf düz çizgi saçları sadece karışıklığı önlemek için ekstra sondaki boşlukları ortadan kaldırmaktır).
- Ne kadar saç kesileceğini belirten ≥ 1 sayısı. Bu, bir sonraki bölümde ayrıntılı olarak açıklanacaktır.
Bir işleve girişi kabul edebilir, STDIN / STDOUT vb. Kullanabilirsiniz ( makul herhangi bir şey) ).
Çıktı
Çıktınız uygulanan saç kesimi ile saçınızın başı olacaktır. Bir saç kesimi vermek için, saçın köküne doğru hareket eden saçın uç noktasından başlayarak, her saç teli uzunluğunu belirtilen miktar kadar azaltın (her zaman 1 veya daha büyük olacaktır). Ancak, her zaman kök bozulmamış bırakın!
İşte basit bir örnek. Kafa için girdinin
\
/
|
|
İkinci bir girişle 2
, iplikten iki atom kesip bir sonucu elde edersiniz.
|
|
Ve bir girişi ile 42
, çıktı sadece
|
Baştan önce ve sonra boşlukların tamamen alakasız olduğunu unutmayın; fazladan satırları kesebilir veya daha fazla dolgu ekleyebilirsiniz. Kafa sağlam kaldığı sürece önemli değil. (Sondaki boşlukla da istediğinizi yapabilirsiniz.)
Test Durumları
Tüm test durumları için, bu yazının en başında sunulan örnek kullanılacaktır.
Saç kesimi uzunluğu = 1:
/- |
/ \ | |
\ \ \ \ |
--\ | \ | |
/ |-- / / |
|- //--| / |
| | || // |
| \ /| // \ |
3 uzunluğu:
|
\ |
--\ | \ |
/ |-- / / |
|- // | / |
| || // |
| \ /| // \ |
7 uzunluğu:
|- / |
| | / |
| \ /| // \ |
1337 uzunluğu:
| \ /| // \ |
puanlama
Bu kod golf , bu yüzden bayt içindeki en kısa kod kazanacak!
-
, soldan üçüncü iplikçi soldan |
dördüncü iplikçikte
-
değil, neyi o işaret . Örneğin, |
işaret etmez /
ilk iplikçik, ancak tarafından işaret /
. (Evet, kafa karıştırıcı olduğunu biliyorum; GIF'i birkaç kez tekrarlamak zorunda kaldım çünkü kendimi bile karıştırdım!) Bunu anlamanın daha kolay bir yolu sadece ikinci ipin tepesine bakmak olabilir.
-
diziye birleştirilmesi gerektiğidir .