APL'de trenler adı verilen zımni işlevler yazabilirsiniz . Nasıl çalıştıkları bu zorluk için önemsizdir. ⍴
İşlev olarak kullanılarak gruplandırılabilecekleri farklı yollar şunlardır :
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
Emir aynı kalır. Prosedür, kesinlikle 3'ten fazla fonksiyon olduğu sürece, son 3 fonksiyonun bir fonksiyonda gruplandırılmasıdır. Yuvalanmış bir trenle karşılaşırsak, devam etmeden önce bunu parantez içine alırız. İşte uygulanan prosedür ⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
İşte aynı prosedür uygulanır ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
Giriş
Bu zorluk için girdi basitleştirilecektir. Bu, parantezleri açmak ve kapatmak için 2 farklı karakter ve işlevler için parantez için seçilenlerden farklı 1 karakter seçebileceğiniz anlamına gelir. Seçtiğiniz karakterlerin tutarlı olması gerekir. Giriş boş olmayacak ve içeriği olmayan parantez içermeyecektir (örn. ()
).
Çıktı
Yine, 3 farklı karakter, 2 parantez ve 1 işlev için seçebilirsiniz. Giriş için seçilenlerle aynı olmaları gerekmediğini, ancak tutarlı olmaları gerektiğini unutmayın.
kurallar
- Girişte yalnızca bir işlevi içine alan parantezler varsa, bunları çıktıdan kaldırmanız gerekir. Çıktınız gereksiz parantez içeremez (yani yalnızca bir işlevi veya tüm çıktıyı kapsayan).
- Çözümünüz bu zorluk için geçerli olduğu sürece burada kullanılan algoritmayı uygulamanız gerekmez.
- Giriş ve çıkış, Giriş ve Çıkış bölümlerinde açıklanan formattaki dizelerdir. Girişin en az bir karakteri olacaktır.
- Kullanılması standart boşluklar kesinlikle yasaktır.
- Bu kod golf , bu yüzden en kısa cevap kazanır. Ancak, bu dil başına bir yarışma olduğu ve bu görevin diğer dillerde yazılan kodla karşılaştırıldığında daha uzun kodla sonuçlanacağı dillerde yanıt vermeyi teşvik etmek için kabul edilen bir cevap olmayacaktır.
Test senaryoları
Burada kullanılan karakterlerdir ()⍴
, bunları seçtiğiniz karakterlerle değiştirmelisiniz.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
Bu meydan okuma Sandbox'ta yayınlandı. Gerekli ayrıcalığa sahipseniz, korumalı alan yayınını burada görüntüleyebilirsiniz .