Lakban dapat memperbaiki apa pun [tertutup]

13

Gambaran

Tantangan ini terinspirasi oleh pos Meta StackOverflow ini . Di dalamnya, @hakre mengatakan:

Saya telah melihat sebuah proyek yang benar-benar ditulis oleh Stackoverflow (salinan noob bersama-sama dari SO di sini dan SO di sana), atribusi biasanya tidak pernah dilakukan yang menghasilkan penghentian hak di bawah CC. (sic)

Misi Anda adalah membuat program paling menarik yang Anda bisa - tanpa pernah menulis satu baris kode pun. Anda hanya dapat menggunakan kode yang sudah ditulis untuk Anda, baik dalam pertanyaan maupun jawaban dari StackOverflow. Yang bisa Anda lakukan adalah lakban semuanya sebaik mungkin. Dan tentu saja, sangat penting bahwa kami memberikan atribusi yang sesuai sehingga kami tidak mendapatkan hak kami diakhiri.


Aturan

  1. Anda harus memasukkan tautan ke pertanyaan / jawaban yang Anda gunakan dalam jawaban Anda.
  2. Anda tidak boleh mengubah kode yang Anda temukan, dengan pengecualian berikut:

    Sebuah. Anda dapat mengubah nama variabel, fungsi, dan metode. (Ini tidak berarti Anda dapat mengubah metode doa , dengan mengubah, mengatakan scanner.nextInt()untuk scanner.nextLine()dan mengklaim bahwa Anda mengubah nama metode. Perubahan harus dalam definisi atau mengacu pada entitas yang sama.)

    b. Anda dapat menyesuaikan lekukan dengan tepat.

    c. Anda dapat mengasumsikan bahwa modul yang tepat dimuat agar cuplikan kode berfungsi. (misalnya, importpernyataan untuk Java dan Python, usingpernyataan untuk C # dan C ++, dan padanannya dalam semua bahasa) Jika cuplikan kode menyertakan huruf imports untuk Anda, Anda dapat memindahkannya ke bagian atas kode.

    d. Jika bahasa mengharuskan kode berada dalam semacam tubuh metode untuk dieksekusi (misalnya, public static void main(String[] args)untuk Java, static int Main(string[] args)untuk C #, dan sebagainya), Anda dapat membungkus kode Anda dengan metode yang sesuai. Tetapi isi dari metode utama itu harus tetap tidak dimodifikasi.

  3. Anda harus memberikan daftar eksplisit tentang perubahan nama / metode / fungsi / kelas apa pun yang dilakukan.

  4. Anda tidak dapat mengambil cuplikan dari potongan (artinya jika Anda mengambil blok kode dari sebuah pos, Anda mengambil semuanya)
  5. Berikan deskripsi singkat tentang apa yang dilakukan kode untuk orang-orang yang tidak akrab dengan bahasa yang Anda gunakan.
  6. Kontes popularitas, jadi yang paling unggul menang!

Contoh Lima Menit Boring (Python 3)

Deskripsi : Membaca banyak file log dari direktori saat ini dan mengacak garis di dalamnya (mengasyikkan, bukan? Ini benar-benar akan memenangkan kontes popularitas)

Sumber

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)

Modifikasi Hukum

  • Berganti nama fnamemenjadi filedari tautan 1
  • Berganti nama bmenjadi contentdari tautan 2

Atribusi

  1. /programming//a/3277516/1435657
  2. /programming//a/16737991/1435657
  3. /programming//a/4918520/1435657
asteri
sumber
8
Saya sangat menyukai ide itu, tetapi saya pikir pertanyaan ini akan sangat bermanfaat dengan membatasi ruang lingkup untuk tugas tertentu. Itu akan a) menginspirasi lebih banyak kreativitas karena Anda tidak bisa hanya menyalin bersama apa saja dan b) itu akan membuka kemungkinan untuk menggunakan kembali jenis pertanyaan (menarik) ini nanti dalam konteks yang berbeda. Jika Anda membiarkannya sebagai "melakukan apa pun yang Anda inginkan", semua pertanyaan lebih lanjut seperti ini akan menjadi duplikat. Aku takut, aku harus memilih sebagai "terlalu luas" karena itu mungkin pertanyaan yang menarik di masa depan.
Martin Ender
2
Saya harus menambahkan, tidak, saya tidak ingin ini menjadi trolling kode berikutnya, di mana semua orang memposting "Tambahkan dua angka", "Pisahkan string ini", dengan tag "duct-tape-coding". Saya pikir kita bisa menangani ini lebih kreatif dari itu. Saya hanya ingin meninggalkan ruang untuk interpretasi lain dari kompetisi sumber terbatas semacam ini.
Martin Ender
1
@ m.buettner Saya juga tidak yakin bahwa CodeGolf.SE tentu akan mendapat manfaat dari banyak pertanyaan seperti ini, untuk alasan yang sama Anda menyebutkan: mengapa "membagi string menggunakan kode SO", "dapatkan nomor acak dari 1- 100 menggunakan kode SO ", dan sebagainya? Tapi itu hanya pendapat saya. Saya jauh dari pro CodeGolf.SE. :)
asteri
3
Saya akan menghapus tag kustom acak untuk saat ini karena kebutuhan untuk itu belum ditetapkan (dan kemungkinan besar tidak perlu dan tidak menambah nilai).
asteri
1
Saya setuju bahwa kita perlu berhati-hati dengan membanjiri PPCG dengan pertanyaan seperti ini, hanya karena itu menyenangkan dan novel. Tapi saya pikir beberapa pertanyaan yang benar-benar berbeda bisa datang dari ini ... seperti berbasis matematika, yang berbasis grafis, yang menggunakan penilaian kode-golf dan tantangan polyglot mungkin. Oleh karena itu, saya lebih suka lingkupnya terbatas. Dalam hal orang hanya menyalin tantangan tanpa sesuatu yang substansial, saya pikir itu tugas masyarakat untuk sedikit lebih ketat dalam "menutup sebagai duplikat" ketika datang ke jenis tantangan baru.
Martin Ender

Jawaban:

8

C - satu kalkulator operasi

Mari kita mulai ini.
Sebenarnya cukup sulit untuk menemukan potongan-potongan program C yang bukan keseluruhan program. Saya paling kesulitan dengan deklarasi.

// 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
}

Mengambil operasi integral sederhana seperti 3+151atau 41/2pada stdin dan mengeluarkan hasilnya ke stdout.

mniip
sumber
1
Menarik menggunakan kembali blok kode yang sama dan mengubah nama variabel dua kali. Aku bahkan tidak memikirkan itu! +1
asteri