Koli bandı her şeyi düzeltebilir [kapalı]


13

genel bakış

Bu sorun, bu StackOverflow Meta gönderisinden esinlenmiştir . İçinde, @hakre diyor ki:

Gerçekten Stackoverflow tarafından yazılmış bir proje gördüm (burada ve SO orada birlikte bir noob kopyaları), atıf normalde hiçbir zaman yapılır CC altında hakların sonlandırılması ile sonuçlanır. (sic)

Göreviniz, tek bir kod satırı yazmadan yapabileceğiniz en ilginç programı yapmaktır. StackOverflow'un hem sorularında hem de yanıtlarında yalnızca sizin için yazılmış olan kodu kullanabilirsiniz. Yapabileceğiniz tek şey koli bandı hep birlikte yapabileceğiniz en iyisidir. Ve elbette, haklarımızı feshetmemek için uygun atıfta bulunmamız çok önemlidir.


kurallar

  1. Cevabınızda kullandığınız sorulara / cevaplara bağlantılar eklemelisiniz.
  2. Sen olmayabilir aşağıdaki istisnalarla bulmak kodunu değiştirin:

    a. Değişkenleri, işlevleri ve yöntemleri yeniden adlandırabilirsiniz. (Bu, bir yöntem değiştirmek anlamına gelmez çağırmayı söylemek, değiştirerek, scanner.nextInt()karşı scanner.nextLine()ve bir yöntem adı değiştirirken iddia. Değişikliğin aynı varlık tanımı ya da referans olmalıdır.)

    b. Girintiyi uygun şekilde ayarlayabilirsiniz.

    c. Kod parçacıklarının çalışması için uygun modüllerin yüklendiğini varsayabilirsiniz. (örneğin, importJava ve Python usingiçin ifadeler, C # ve C ++ için ifadeler ve bunların tüm dillerdeki eşdeğerleri) Kod snippet'i importsizin için s içeriyorsa, bunları kodun en üstüne taşıyabilirsiniz.

    d. Dil, kodun yürütülmesi için bir tür yöntem gövdesinde olmasını gerektiriyorsa (örneğin, public static void main(String[] args)Java, static int Main(string[] args)C # vb. İçin), kodunuzu uygun yöntemle sarabilirsiniz. Ancak bu ana yöntemin içeriği değiştirilmeden kalmalıdır.

  3. Gerçekleştirilen herhangi bir değişken / yöntem / işlev / sınıf yeniden adlandırma girişinin açık bir listesini sağlamanız gerekir.

  4. Parçacık parçacıkları alamazsınız (yani bir gönderiden kod bloğu alırsanız, her şeyi alırsınız)
  5. Kodun, kullandığınız dil ile samimi olmayan kişiler için ne yaptığına dair kısa bir açıklama girin.
  6. Popülerlik yarışması, bu yüzden en upvotes kazanır!

Sıkıcı Beş Dakika Örneği (Python 3)

Açıklama : Geçerli dizindeki bir sürü günlük dosyasını okur ve içindeki satırları rastgele düzenler (heyecan verici, değil mi? Bu tamamen popülerlik yarışmasını kazanır)

Kaynak

import glob
import random

for file in glob.glob('log-*-*.txt'):
    # Etc.
    with open(file) as f:
        content = f.readlines()
        # shuffle the list in place 
        random.shuffle(content)

        # print it
        print(content)

Yasal Değişiklikler

  • Yeniden adlandırılmış fnameiçin filelinke 1'den
  • Yeniden adlandırılmış biçin contentlinke 2'den

Atıflar

  1. https://stackoverflow.com/a/3277516/1435657
  2. https://stackoverflow.com/a/16737991/1435657
  3. https://stackoverflow.com/a/4918520/1435657

8
Fikri gerçekten seviyorum, ancak bu sorunun kapsamı belirli bir görevle sınırlamaktan büyük fayda sağlayacağını düşünüyorum. Bu, a) daha fazla yaratıcılığa ilham verir, çünkü hiçbir şeyi birlikte kopyalayamazsınız ve b) bu ​​(ilginç) soruyu daha sonra farklı bir bağlamda tekrar kullanma olanağını açık bırakacaktır. Eğer sadece "ne istersen yap" diye bırakırsan, bunun gibi tüm diğer sorular tekrarlanır. Korkarım ki, yaklaşan oyları "çok geniş" olarak seçmek zorundayım çünkü gelecekteki ilginç soruları torpido ediyor.
Martin Ender

2
Ben eklemeliyim, hayır Ben herkesin bir "duct-tape-coding" etiketi ile bir "İki sayı ekle", "Bu dize Böl", bir sonraki kod trolling olmak istemiyorum. Bence bundan daha yaratıcı bir şekilde başa çıkabiliriz. Bu tür kısıtlı kaynak rekabetinin diğer yorumları için biraz yer bırakmak istiyorum.
Martin Ender

1
@ m.buettner Ayrıca CodeGolf.SE mutlaka bu gibi birçok soru yararlanabilir emin değilim, aynı nedenlerle: neden "SO kodu kullanarak bir dize bölmek", "1- rastgele bir sayı olsun 100 SO kodu kullanarak ", vb.? Ama bu sadece benim görüşüm. Bir CodeGolf.SE profesyonelinden uzaktayım. :)
asteri

3
Şimdilik rastgele özel etiketi kaldıracağım çünkü buna olan ihtiyaç belirlenmedi (ve muhtemelen gereksiz olacak ve değer katacaktır).
asteri

1
Bu tür sorularla PPCG'ye su basmaya dikkat etmemiz gerektiğine katılıyorum, çünkü bu eğlenceli ve roman. Ama bence birkaç farklı soru ortaya çıkabilir… matematik tabanlı, grafik tabanlı, kod-golf puanlaması ve çok dilli bir meydan okuma kullanan biri gibi. Bu nedenle, kapsamın sınırlı olmasını tercih ederim. Zorluğu önemli bir şey olmadan kopyalayan insanlar açısından, yeni meydan okuma türleri söz konusu olduğunda "yinelenen kapanma" konusunda biraz daha katı olmak topluluğun görevidir.
Martin Ender

Yanıtlar:


8

C - bir işlem hesaplayıcısı

Bunu bir başlangıç ​​için yapalım.
Aslında bütün programlar olmayan C programları bulmak oldukça zor. Beyanlarla ilgili en fazla sorun yaşadım.

// http://stackoverflow.com/a/2911978 Block #1 (changed i to a)
static int a = 10;
// http://stackoverflow.com/a/2911978 Block #1 (changed i to b)
static int b = 10;
// http://stackoverflow.com/a/442647 Block #1 (changed c to op)
unsigned char op = (unsigned char)-1;
// http://stackoverflow.com/q/3711048 Inline block #1
int main()
// http://stackoverflow.com/a/14902422 Inline block #1
{
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to a)
scanf("%d", &a)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Block #2 (changed c to op)
scanf("%c", &op)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/q/217074 Inline block #2 (changed i to b)
scanf("%d", &b)
// http://stackoverflow.com/a/23353870 Inline block #2
;
// http://stackoverflow.com/a/4173188 Block #2
int result = 0;
result = (op == '*') ? a * b : result;
result = (op == '/') ? a / b : result;
result = (op == '+') ? a + b : result;
result = (op == '-') ? a - b : result;
printf("%d",result);
// http://stackoverflow.com/a/3245525 Block #2
printf("\n");  /* prints newline */
// http://stackoverflow.com/q/4138649 Inline block #1
return 0;
// http://stackoverflow.com/a/14902422 Inline block #2
}

Stdin gibi 3+151veya 41/2üzerinde basit bir integral işlemi alır ve sonucu stdout'a verir.


1
Aynı kod bloğunun ilginç bir şekilde yeniden kullanılması ve değişkenin iki kez yeniden adlandırılması. Bunu düşünmedim bile! +1
asteri
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.