EDIT: Lisp kullanıyorsanız, bayt sayma altta bazı yönergeler verdim.
Amaç: Basamaklı olmayan sayılara bir dize ayıran ve normal ifadeler kullanılmadan, her bir dize içindeki rakamlardan oluşan bir dizi döndüren en kısa işlevi yapın. Her dizede baştaki sıfırlar bulunmalıdır.
Mevcut Sıralamalar (kategorilere ayrılmış):
- C / C ++ / C # / Java: 68 (C) ....
- GolfScript / APL / J: 13 (APL)
- Diğerleri: 17 (Bash, kullanımlar
tr
), 24 (Ruby)
Kurallar:
(Uzunluğu özür dilerim)
- Biçim, tek bir dize bağımsız değişkenine sahip bir işlev olarak olmalıdır. Dizinin düzgün döndürülmesi için gerekirse en fazla iki bağımsız değişken eklenebilir (örn. Sh / csh / DOS Batch öğesinin döndürülmesi için fazladan değişken başvurusu gerekir).
- Birincil işlev bildirimi sayılmaz ve diğer standart kitaplıkları içe aktarmaz. "# include`s," import`s ve "using`s sayılmaz. Geri kalan her şey. Buna `` define '' ve yardımcı fonksiyonlar dahildir. Karışıklık için özür dilerim. Neyi saymaz / saymaz (C stili sözdiziminde yazılmıştır) hakkında yararlı bir kılavuz olarak bakın
// toplamı saymaz, aksi takdirde ihmal edilebilir // açık değil, Java'nın standart kütüphanesinin yarısı gibi. #include <stdio.h> import some.builtin.Class // sayılmaz, yukarıya bakın #define printf p // toplamı sayar / * Diğer önişlemci yönergeleri vb. Sayılır. * / int i = 0; // sayılır birFonksiyon (); // sayılır char [] [] myMainSplitFunction (char [] [] dizi) {// sayılmaz // Buradaki her şey önemlidir return returnArray; // Bu bile önemlidir. } // sayılmaz / * Buradaki her şey önemlidir, beyan dahil * / char [] [] someHelperFunction (char [] string) { // şey } // bu bile önemlidir
- Çıktı bir dize dizisi veya benzeri olmalıdır (Java ve benzerindeki dizi listeleri kabul edilebilir). Kabul edilen çıkış örnekler:
String[]
,char[][]
,Array
,List
, veArray
(nesne). - Dizi yalnızca değişken uzunlukta dize temel öğeleri veya dize nesneleri içermelidir. Aşağıdaki istisna dışında, dönüşte boş dizeler olmamalıdır. Not: Dizeler, aşağıdaki örnek girdi ve çıktı gibi ardışık eşleşmeler dizisini içermelidir.
- Eşleşme yoksa, işlev gövdesi
null
, boş bir dizi / liste veya boş bir dize içeren bir dizi / liste döndürmelidir . - Harici kütüphaneye izin verilmez.
- DOS satır sonları iki değil, bir bayt olarak sayılır (zaten meta ile kaplıdır, ancak vurgulanması gerekir)
- Ve buradaki en büyük kural: düzenli ifadelere izin verilmiyor.
Bu bir kod golf sorusu, bu yüzden en küçük boyut kazanır. İyi şanslar!
Ve işte bazı örnek giriş ve çıkışlar (C stili kaçışlarla):
Giriş: "abc123def456" Çıktı: ["123", "456"] Girdi: "aitew034snk582: 3c" Çıktı: ["034", "582", "3"] Girdi: "as5493tax54 \\ 430-52@g9.fc" Çıktı: ["5493", "54", "430", "52", "9"] Girdi: "sasprs] \" re \\ forz "yendi Çıktı: boş, [], [""] veya benzeri
Lütfen cevaplarınız tarafından kaç bayt kullanıldığını ve her zaman olduğu gibi mutlu golf oynayın!
Lisp Kuralları
Lisp lehçelerinde neyin sayıldığı ve sayılmadığı aşağıda açıklanmıştır:
;;; seçenek 1 (defun özü dizeleri (ab); sayılmaz (şey) ;;; Buradaki her şey önemlidir ); Sayılmaz ;;; seçenek 2 (defun özü dizeleri (string & aux (start 0) (end 0))); sayılmaz (şey) ;;; Buradaki her şey önemlidir ); Önemli değil.Diğer tüm lambdaslar bayt sayısına tam olarak sayılır.