Pek çok PPCG kullanıcısı, hem sohbet hem de Sandbox'ta , özellikle Martin Ender , AdmBorkBork , Emigna ve user202729'da bu zorluğun yaratılmasına yardımcı oldu.
Topluluğumuz, "golf dili" olarak adlandırdığımız, özellikle golf oynamak için özel olarak tasarlanmış bir dizi dil oluşturmayı gerekli buldu. Bu tür diller bir zamanlar zekice olan, şimdi sıra dışı olan GolfScript'ten Jelly ve Husk gibi zarif ve özlü dillere dönüşmüştür . Gördüğümüz gibi, bu diller bir dizi görev için sürekli olarak kısalıyor. Bu nedenle, golf dilleriyle ilgili buradaki bariz uzmanlar olarak, rekabet etmeye cesaret eden diğer dilleri yenmek için birlikte bir dil tasarlamalıyız. Bugle ile tanışın!
Bugle: kısaltması itibaren BuGoL: Bu ILT git lfing L anguage.
Bu zorluk nasıl işe yarayacak
Giriş bölümünde istekli olduğum şeyi alamadıysanız , bu meydan okuma, her birinin yeni bir golf dilinin tercümanına bir şeyler kattığımız ve PPCG'de her cevapla rekabet etme yeteneğini geliştirdiği bir cevap zincirleme mücadelesidir.
Dilin belirticisi / tercüman temelinde oluşan ilk cevabı göndereceğim ve diğer tüm cevaplar bundan devam edecek. Yeni gönderimler aşağıdakileri sağlayacaktır:
- Dilin teknik özelliklerinde bir değişiklik
- Değişikliklerde ortaya konulanı tam olarak karşılayan güncel bir tercüman
- Dilin güncellenmiş puanı (biraz daha fazla ayrıntı)
Spesifikasyonu üç yoldan biriyle değiştirebilirsiniz:
- Tek bir komut ekleyebilirsiniz
- İki yeni komut ekleyebilirsiniz
- Mevcut bir komutun davranışını düzenleyebilirsiniz.
Yeni tercümanla ilgili olarak, Python ile yazılmış en son sürümü kullanmanız gerekir . Golf oynamak zorunda değil. Önceden eklenmiş her komut en son tercümanın yanı sıra en yeni komutların (eklediğiniz komutların) test edilebilir olması gerekir. Ayrıca tercümanı güncellerken yorumlarda veya yazı dizilerinde olduğu gibi rahatsız edici bir dil kullanmamalısınız.
Eklenen komut (lar) istediğiniz her şeyi yapabilir . Tek şartlar:
- Saldırgan çıktılar üretmez
- Başka bir komutla aynı değil
- Örnek zorluklardan birinin tamamlanmasını engellemez
Bunların yanı sıra, istediğiniz kadar spesifik veya genel olabilir. İstediğiniz herhangi bir karakter de olabilir . Eklemenizin 'yeni bir komut' oluşturup oluşturmadığından emin değilseniz, yorumlarda sormaktan çekinmeyin.
Dilin puanı
Tüm yeni gönderilere dilin puanını eklemek zorunda olduğunuzu fark etmiş olabilirsiniz. Puanı, bu mücadelenin sonsuza dek sürmesini engelleyen şeydir ve şöyle tanımlanır:
Mevcut puan, dilin 20 görevi tamamlaması için aldığı bayt sayısının toplamıdır.
Görevlerin her biri için , standart boşluklar gibi Standart G / Ç kuralları uygulanır .
20 görev:
- "Selam Dünya!" - Dize çıktı
Hello, World!
- 1, 2, Fizz, 4, Buzz - Her tamsayı 1 ile 100 (dahil) arasında ayrı bir satıra, 3'ün katları değiştirilir
Fizz
, 5'in katları değiştirilirBuzz
ve her ikisinin katlarıFizzBuzz
- 2014 kodunu kaynak kodunuzda numarasız üretin - 2014
0123456789
kodunu, harici kodlara veya rastgele tohumlara erişmeden, kaynak koddaki karakterlerden herhangi birini kullanmadan verin. - Gizlenmiş Merhaba Dünya - Çıkış dize
Hello, World!
, en azından aşağıdaki setler ikisinde karakterlerden herhangi kullanmadan:hlwd
,eor01
ve27
(harf büyüklüğüne duyarsız) Doğum Günün Kutlu Olsun'u en sevdiğiniz programlama diline söyleyin - İstediğiniz bir dilde, aşağıdakileri çıkarın:
Happy Birthday to You Happy Birthday to You Happy Birthday Dear [the name of your favourite programming language] Happy Birthday to You
Golfu kodlayacak yabancı değiliz, kuralları biliyorsunuz, ve ben de öyle - "Asla Vazgeçmeyeceksin" sözlerinin tamamını çıkar .
- Çıktı işareti - Bir numara önüne alındığında, baskı -1 Negatifse, 0 Eğer öyleyse 0 veya 1 pozitif ise
- Collatz Conjecture (OEIS A006577) - Bir tamsayıdan başlayarak, eşitse 2 ile bölün veya 3 ile çarpın ve garipse 1 ekleyin ve işlemi 1 değerine kadar tekrarlayın. Çıktı, yineleme sayısı olmalıdır seni 1'e götürür.
- Zorluklar Dizisi # 1: Değişken Diziler - Bir tamsayı dizisi verildiğinde, eşitlenmiş tüm öğelerin eşit olup olmadığını kontrol edin ve tüm küçük dizinlenmiş öğelerin eşit olup olmadığını kontrol edin ve buna göre bir truthy veya sahte değer çıktılayın
- Ben önemsiz bir dizi miyim? - Bir tamsayı dizisi verildiğinde, ardışık öğeler arasındaki mutlak farkların hepsinin 1'den küçük veya eşit olup olmadığını kontrol edin ve buna göre bir truthy veya falsy değeri verin
- Bu sayı asal mı? - Olumlu bir tamsayı verildiğinde, asal olup olmadığını kontrol etmek için tam bir program yazın ve buna göre bir aşırılık ya da sahtekarlık değeri ortaya koymak
- Ben bir palindromum. Sen? - Bir dize verildiğinde, program / işleviniz de palindrom iken, bunun palindrom olup olmadığını kontrol edin ve buna göre iki farklı ve tutarlı değer çıktısı alın.
- Standart girişindeki sayıları topla - STDIN'den bir sayıları al ve toplamlarını çıkar.
- Faktörü Bulun - Bir tamsayı verildiğinde
n
, arasındaki1
ve tümcül arasındaki tüm tamsayıların ürününün
çıkarın. - Sonsuz çıkış üretmek için en kısa kod - Herhangi bir giriş olmadan, teorik olarak çıkış işlemini asla durduramayacak sonsuz çıkış üretir.
- Pi bir dilim fırında - Bu tam metni çıktısı:
()()()()()()
|\3.1415926|
|:\53589793|
\::\2384626|
\::\433832|
\::\79502|
\::\8841|
\::\971|
\::\69|
\::\3|
\__\|
- N'ye bölünmeyen en küçük sayıyı bulun - N pozitif olan bir tamsayı verildiğinde, N'yi bölmeyen en küçük pozitif tamsayı verin.
- Bu çift mi yoksa tuhaf mı? - Tamsayı N verildiğinde, paritesini truthy / falsy değerleri olarak verin.
- Kodla aynı uzunluktaki çıktı - Çıktının kodla aynı olmadığı en kısa kodu, çıktısının kod ile aynı uzunluğa sahip olduğunu yazın.
- Büyük iyiliğin için sana bir golf at! - Dilinize en kısa quine yazın .
Geçerli olabilmek için, yeni bir başvuru , her biri için en az 1 bayt olmak üzere en az 2 sorun için golf başvurusunda bulunmuş olmalıdır . Diğer başvuruların uzunluklarını artırabilirsiniz, ancak toplam puan cevap başına en az 2 oranında azaltılmalıdır . Ayrıca, güncellenen programlara bir bağlantı eklemeyi düşünün. Güncelleştirilmiş çözümler çalışmak olmamalıdır tercüman önceki bir sürümü ile çalıştırdığınızda.
Çerezler nasıl alınır
Deneme zorunluluğu olmayan ve puanınızı etkilemeyen, fakat Bugle'ın yeterince yetenekli olup olmadığını test etmek için ilave zorluklar olan 5 zorluktan oluşan bir listem var. Cevabınıza bunlardan herhangi birine bir çözüm eklemekten çekinmeyin:
- Kendi kendine tercüman oluşturma
- Yük taşıma kapasitesi quine oluşturma
- Bir dizeyi Covfefify
- Hiperprogramlama: N + N, N × N, N ^ N hepsi bir arada
- "KNOT" ya da "NOT"?
Herkesin mücadelede yarışabilmesi için gerekli olmadığından açıklamaları içermez.
Nasıl kazanılır
Minimum puan ( 16 olduğuna inanıyoruz , ancak golf oynamak için herhangi bir girişimi memnuniyetle karşılansa da) ulaşıldığında, çözümler daha iyi bir puan alamadığı için zincir sona erdi. 16'ya ulaşıldıktan sonra, mücadeleye daha fazla golf oynamak için herkese bir şans vermek için zorluk bir ay sonra hayatta kalır . Bu ay geçtikten sonra zorluk sona erdi.
Zorluk sona erdiğinde, tercümanı GitHub deposuna taşıyacağım ve normal bir dili serbest bırakma alışkanlıklarından geçeceğim. Ayrıca, şu anda, söz konusu dili kullanarak PPCG ile ilgili sorunlara çözüm göndermeye başlayabilirsiniz, ancak lütfen ön sayfayı yanıtlarla doldurmamaya çalışın. Bunun yerine, bir süre boyunca onları yayıldı.
Biçimlendirme
Bilginin cevabınızda daha kolay bulunmasını sağlamak için, lütfen aşağıdaki şekilde formatlayın:
# [N]. [Score]
[New command + description]
[Interpreter/link to interpreter]
[Link to programs]
[N]
Cevap numaranız nerede (birincisi 1, ikincisi 2 vs.)
kurallar
- Cevapların gönderilmesi arasında 3 saat beklemelisiniz
- 10 gün boyunca (tam olarak 240 saat) hiçbir cevap gönderilmediği sürece, arka arkaya iki kez mesaj gönderemezsiniz
- Önceki komutları kaldıramazsınız.
- Tercümanınız golf oynamak zorunda değildir ve bayt sayısı burada tamamen önemsizdir.
- Cevabınız sonuncusu ise birisi programlarına bir golf öneriyorsa, gereken golfs içinde düzenleyebilir ve puanınızı güncelleyin.
- Ayrıca cevabınız zincirin ortasındayken, puanınız daha sonraki cevaplardan daha düşük olmadıkça da yapabilirsiniz.
- Lütfen, bu dili kullanarak mevcut PPCG zorluklarına cevap vermekten kaçının, en azından zorluk tamamlanana kadar.
- Tercüman Python 3 ile yazılmıştır ve tüm zincir boyunca bu şekilde devam etmelidir. Dilin değiştirilmesi yasaktır.
- Yine geçerli olmak için, yeni bir başvuru , her biri için en az 1 bayt olmak üzere en az 2 sorun için golf başvurusunda bulunmalıdır .
Başlayalım!
Hello, World!
, 19 bayttır. Ancak boş programın davranışı girdilere bağlı olarak değişiyorsa azaltılabilir
for
döngüler gibi ) izin verilir ve eklenmeleri teşvik edilir