Golf Uygulaması: Pyth [kapalı]


10

Bu Pyth golf yaparken kullanılabilecek hileler ve optimizasyonlar için bir meydan okuma. Pyth golfçüleri hilelerin çoğunu tanıyabilir. Ancak, alışılmadık yaklaşımlar ve yapılar bu yüzden bir göz atın, sorumluluk taşıyor olabilirler Pyth İpuçları yanı sıra Pyth Karakter Referans eğer takılıyorum. Çözümler burada test edilebilir .

Hedef: Her biri optimize etmeniz için bir Pyth snippet'ine sahip 8 sorun var. Amacınız eşdeğer ancak daha kısa bir şey yaratmaktır. Referans çözeltiler toplam 80 byte. Amacınız bunu mümkün olduğunca geçmektir.

Kazanan, en az toplam bayt sayısı ile 8 sorunun hepsini çözen gönderime gidecek. Tiebreaker daha önceki gönderi.

Cevaplama: Lütfen toplam puanınız hariç tüm yanıtınızı bozun. Kendi yanıtınızı göndermeden önce başkalarının cevaplarına bakmamanız amaçlanmıştır.

Her gönderim her sorunu yanıtlamalı ve karşılık gelen bayt sayısını vermelidir, ancak onu geliştiremezseniz referans uygulamasını kullanmaktan çekinmeyin.

Detaylar: Belirli bir değer veya çıkış için soru aramaları, varsa qeşitlik isteniyorsa, bu yüzden 1ve !0eşdeğerdir. Soru, bir koşulun doğru olup olmadığını test etmek istiyorsa, koşul doğruysa çıktı doğru olmalı ve koşul yanlışsa, ancak bunun ötesinde kısıtlamasız olmalıdır. False için true ve true için false değiştiremezsiniz. Soru bir şeyin yazdırılmasını gerektiriyorsa, sondaki yeni satır dışında başka hiçbir şey yazdırılamaz.

Tüm cevaplar , bu sorunun gönderilmesinden itibaren en son Pyth taahhüdü için geçerli olmalıdır .

Sorun 1: Q'da bir küme verildiğinde, Q öğelerini herhangi bir sırayla içeren bir liste çıkarın.

; 3 bytes
f1Q

Sorun 2: Listeyi çıktılayın [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problem 3: Q'da pozitif bir tamsayı verildiğinde, Q'nun tüm basamaklarının pozitif olup olmadığını test edin (sıfır değil).

; 7 bytes
!f!TjQT

Sorun 4: z'de bir dize verildiğinde, z'nin tırnak işareti içerip içermediğini test edin - "veya '.

; 9 bytes
|}\'z}\"z

Problem 5: Q = 1'i 'Kazanma', Q = 0'ı 'Bağlama' ve Q = -1'i 'Kaybetme' olarak eşleyin.

; 20 bytes
@["Tie""Win""Lose")Q

Sorun 6: Yazdırın 0123456789.

; 6 bytes
sm`dUT

Sorun 7: Z olarak bir dize verildiğinde, ters çevirme sayısını sayın.

(Dizinler ive jeğer bir inversiyon oluşturur i < jfakat z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Sorun 8: z cinsinden bir liste verildiğinde, tekrarlanan bitişik elemanların sayısını sayın.

; 9 bytes
lfqFT.:z2

@ user1737909 Bu cevap doğru. her zaman doğru olan bir işlevi f1Qfiltreler Q, böylece her zaman kümenin tüm öğelerini çıktılar. fbu sorudaki amacı karşılayan bir liste çıkarır.
isaacg

Bu soruyu konu dışı olarak kapatıyorum çünkü parçalar arasında etkileşim olmayan çok parçalı zorluklar kabul edilmiyor. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

Yanıtlar:


9

52 bayt

Sorun 1: 2 bayt

    SQ

Sorun 2: 5 bayt
    jC\f2

Sorun 3: 4 bayt
    -0`Q
Sorun 4: 6 bayt
    @z+N\'
Sorun 5: 17 bayt
    %3>"LTWoiisene"hQ
veya
    @c3"LoseTieWin"hQ
Sorun 6: 3 bayt
    pMT
Sorun 7: 9 bayt
    s>R_d.cz2
Sorun 8: 6 bayt
    sqVztz
@ Xnor'un 4 numaralı problemi çözümünü benimkiyle (her ikisi de 6 bayt) birleştirmek, 4 baytlık güzel bir çözüm sağlar. Böylece 48 bayt mümkündür.


Çözümünüzü xnor's ile birleştiremezsiniz, çünkü xnor's geçersiz (cevabındaki yorumuma bakın).
orlp

@orlp *; geçersiz şeyler hariç her şeyi birleştiren ;-) Yazıma çözüm eklendi.
Jakube

Ah, şimdi görüyorum :) Sanırım ben 6 bayt (ve sayma) optimal daha kötü oldu.
orlp

aaah! Teşekkürler! farkına varmamıştı :). Bunu kaldıracağım.
Ven

7

54 bayt

Görev 1, 2 bayt : SQ
Görev 2, 6 bayt : j102 2
Görev 3, 5 bayt : *FjQT
Görev 4, 6 bayt : @z"'\"
Görev 5, 17 bayt : @c3"LoseTieWin"hQ
Görev 6, 4 bayt : jkUT
Görev 7, 7 bayt : s>M.cz2
Görev 8, 7 bayt :sqM.:z2


Güzel golf :-)
Vedaad Shakib

Falsey'de sadece boş bir satır yazdırdığından, görev 4 için geçerli misiniz?
Maltysen

@Maltysen Evet, çünkü 'in doğru değeri ""Yanlış' not ""dır çünkü Doğru 'dır.
orlp

3

58 bayt

Görev 1, 2 bayt : SQ
Görev 2, 5 bayt : jC\f2
Görev 3, 6 bayt : !}Z Q
Görev 4, 8 bayt : |}\'z}Nz
Görev 5, 18 bayt : @c"Tie\nWin\nLose"bQ
Görev 6, 4 bayt : jkUT
Görev 7, 9 bayt : lf>FT.cz2
Görev 8, 6 bayt :sqVtzz


Ben bilmediğim VO biri için mazur ediyorum bu yüzden, (eğer esitsiz uzunluk işlenen vektör işlemlerini yapıyoruz beri hala tam olarak, bunu anlamıyorum rağmen), ama gerçekten düşündüm gerektiğini C\f= /
orlp

@orlp Veşit olmayan girdileri otomatik olarak keser
Maltysen

3

Bu yazı, tüm cevaplarda en iyi çözümlerin birikimi içindir. Lütfen çözümde ve herhangi bir iyileştirme varsa bu çözümü ilk bulan kişiyi düzenleyin.

48 bayt

1. SQ- 2 bayt, ilk olarak @orlp tarafından gönderildi
2. jC\f2- 5 bayt, ilk olarak @Maltysen tarafından gönderildi
3. -0`Q- 4 bayt, ilk olarak @Jakube tarafından gönderildi
4. @z`N- 4 bayt, @xnor ve @Jakube karışımı, ama değil henüz cevap yok.
(Soruyu yazarken de görmedim)
5. @c3"LoseTieWin"hQ- 17 bayt, ilk olarak @orlp
6 tarafından gönderildi . pMT- 3 bayt, ilk @Jakube tarafından gönderildi
7. s>M.cz2- 7 bayt, ilk @orlp
8 tarafından gönderildi . sqVtzz- 6 bayt, ilk yazan @Maltysen


Sorudan önceki Pyth sürümleriyle sınırlanıyor muyuz?
Doktor

1
"Tüm soruların, bu sorunun gönderilmesinden itibaren en son Pyth taahhüdü için geçerli olması gerekir." Ne düşündüğünüzü duymak isterim. @Optimizer
isaacg

Pyth sürekli gelişiyor, değil mi? (diğer golf dillerinden çok daha hızlı). Dolayısıyla bu sayının (48) yakın gelecekte kolayca 40'ın altına düşmesi muhtemeldir. Ve bu bir uygulama zorluğu olduğundan, daha yeni zorluklar için en yeni Pyth sürümünü kullanarak pratik yapmak istersiniz.
Doktor

2

57 bayt

1. (2) SQSıralama.
2. (5) Önce ASCII val'ye sonra base 2'ye jC\f2 dönüştürün f.
3. (5) /`Q`0Sayı '0'dizesini sayın .
4. (5) @z`\'Dizenin set kesişimini ile alır "'".
5. (18) @c"Tie Win Lose"dQListeyi bölünmüş yapar. Çalışmak için dilimlemedim.
6. (4) jkUTKatılın range(10). Görünüşe göre otomatik olarak bir dizeye dönüştürür.
7. (9) sm>d_d.:zTersinden büyük alt dizeleri sayar.
8. (9) l@C,zz.:zListenin alt listelerinin ve listedeki eleman çiftlerinin kesişme uzunluğu. Referans çözümle aynı uzunluk.


# 4 için çözümünüz geçersiz. Örneğin, dize te\\styanlış pozitiftir.
orlp

@orlp Farklı, daha kısa bir çözümle değiştirdi.
xnor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.