Anonim önek lambda. Bir program gövdesini döndürür.
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}
Çevrimiçi deneyin!
Yöntemler
Bu, çeşitli yöntemleri araştırır ve ilk olarak kullanılabilir olanı döndürür, sonunda evrensel olarak uygulanabilir bir yönteme geri döner.
Tek eleman
Listede yalnızca bir öğe varsa, olduğu gibi döndürülür.
2, 22 vb.
Tek bir rakam sadece 11 kat daha büyük sayı üretmek için tekrarlanabilir,
Hepsi aynı
Sadece en sağdaki ( ⊢) sayıyı döndürüyoruz .
Doğrusal
f (n) = k × n dizileri sadece ilk terimden önce bir artı ekler.
Faktöriyel ve ardından tüm 1'ler
İlk sayı n =! M ve sonraki sayılar 1 !molduğunda !m, n ve m!m1 olduğu ve 1 olduğu için bir çözüm !1olur.
b ab ab ab
Tüm iki basamaklı sayılar tüm tek basamaklı sayılardan daha büyük olduğu için, ilk sayının ön kısmının ikinci sayının arkasına yapıştırıldığı bir çalışma maksimum değeri bir çözümdür.
Üç satırlı kod
Türün herhangi bir formülünün +a×bgeçerli olup olmadığını kontrol edin .
Dize yedeklemesi
5'in altında sayı içermeyen uzun diziler (4 satır sonu olduğu için) SBCS'nin karakterleri olarak kodlanabilir.
Ofset dizesi yedeklemesi
5'in altında rakamlar varsa, bunlardan kaçınmak için 9 yukarı kaydırıyoruz.
Geri çekil
Dizenin "{⍺←⊃⋄1⌽⍺⊢⍵}"ve stringified ( ⍕) girişinin basit dize birleştirmesi . Ör [3,1,4]. Program gövdesini döndürür {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4.
Parantez içindeki parça iki yönlü bir işlevdir, yani bir önek işlevi veya bir infix işlevi olabilir. Böylece en soldaki örneği önek modunda, diğerleri ise infix modunda çalışır. Modlar arasındaki fark ⍺, sol argümanı ifade eden bir değerin olup olmadığıdır . Eğer değilse, o zaman fonksiyona atanır ⊃(ilk olarak).
Yedekleme yönteminin açıklaması
{… } Anonim lambda:
⍺←⊃ Sol bağımsız değişken ( ⍺) yoksa, ⊃(ilk) işlevini⍺
⋄ sonra:
Bu noktada, aşağıdaki kod ⍺, bir sayı listesi (infix çağrısı) veya "ilk" (önek çağrısı) işlevine bağlı olarak iki farklı anlama gelir .
Bir ⍺sayı listesi:
⍺⊢⍵ sol argümanı doğru argüman lehine at
1⌽ bir adım sola döndür
Eğer ⍺"önce" fonksiyonudur:
⊢⍵ doğru argümanı ver
⍺ bunun ilk unsurunu seç
1⌽ bir adım döndür (skalerde işlem yok)
Yedek çalışma yöntemi örneği
Yürütülmesi 3 1 4'in kodunu {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4, 'ilk' fonksiyonunu tahsis ⍺ve böylece birinci elemanın döner; 3.
Yürütme {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4, en sağdaki lambda'nın 3 1 4sol argüman olarak solu "yakalamasına" izin verir , bu nedenle ⍺lehine atılan ve 3 1 4daha sonra bir adım sola döndürülen ve 1 4 3sonuç olarak elde edilen bir değere sahiptir . Bu daha sonra en soldaki lambda için tek argüman olarak kullanılır, burada ⍺"ilk" fonksiyon olur ve sonucun ilk unsur olmasına neden olur; 1.
Yürütme {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4, en sağdaki lambda'nın ortasını 3 1 4sol argümanı olarak "yakalamasına" izin verir ve daha sonra sağ argüman lehine atılır 3 1 4, bu da döndürüldüğünde bir adım sola döner 1 4 3. Bu daha sonra en soldaki 3 1 4sol argüman olarak orta lambda'nın sağ argümanı olarak kullanılır . Sol argüman, bir adım sola döndürülen sağ için atılır 4 3 1. Bu daha sonra en soldaki lambda'nın tek argümanı ⍺olur , böylece ilk elemanı döndüren "ilk fonksiyon" olur; 4.
puanlama
Gerçek verileri kullanarak test etme zamanı geldiğinde, bu test kayışını kullanın (ön test verileriyle doldurulmuş bağlantı). Test senaryoları Girdi alanına girer ve Çıktı birlikte 500 programın toplam bayt sayısı olacaktır. (Ayrıca bir hata atar, ancak bunun nedeni daha sonra Giriş'i olduğu gibi değerlendirmeye çalışmasıdır.)