Gevşek aralıkları yorumlama
ListSharp birçok özelliğe sahip yorumlanmış bir programlama dilidir, bu özelliklerden biri şu şekilde çalışan 1 indeks tabanlı bir aralık yaratıcısıdır:
Sen gibi bir aralığı tanımlamak (INT) TO (INT)
ya da sadece (INT)
nerede ikisi veya tek int dakika arasındaki gidebilir max int32 değeri
Daha sonra bu aralıkları, sınırlarını aşmaktan korkmadan bir dizinin öğelerini çıkarmak için kullanabilirsiniz
dolayısıyla:
1 TO 5
oluşturur: {1,2,3,4,5}
3
oluşturur: {3}
Aralıklar AND
operatör kullanılarak eklenebilir
1 TO 5 AND 3 TO 6
oluşturur: {1,2,3,4,5,3,4,5,6}
bunun negatif sayılarla da çalıştığını unutmayın
3 TO -3
oluşturur: {3,2,1,0,-1,-2,-3}
Zor olan şudur:
Giriş
Dize olarak bir karakter dizisi ve önceden tanımlanmış aralık yan tümcesi
Çıktı
Aralığın 1 dizin tabanlı konumundaki öğeler (mevcut olmayan / negatif dizinler boş bir karaktere çevrilir)
Nasıl kazanılır
Bir kod-golf meydan okuma olarak, kazanmak için en kısa bayt sayısı ile programı oluşturmak gerekiyor
Boş karakterlerin mevcut olmadığı belirtildi, bu yüzden onları görmezden gelmelisiniz (sadece burada daha kolay anlaşılmasını sağlamak için gösterdim, ancak insanları karıştırdı)
Test senaryoları:
input array is:
{'H','e','l','l','o',' ','W','o','r','l','d'}
range clause:
"1 TO 3" => "Hel"
"5" => "o"
"-10 TO 10" => "Hello Worl"
"0 AND 2 AND 4" => "el"
"8 TO 3" => "oW oll"
"-300 AND 300" => ""
"1 TO 3 AND 3 TO 1" => "HelleH"
"-20 TO 0 AND 1 AND 4" => "Hl"
3 TO 3
bir girdi olur mu ve beklenen çıktı nedir?
AND
Çoklu aralıklar için bazı test senaryolarına ihtiyacınız vardır . Ayrıca, çoğu dilde standart olan sıfır tabanlı dizine ekleme özelliğini kullanıp kullanamayacağımızı yanıtlamadınız.
"0 TO 2"
=>{'H', 'e', 'l'}
?