Dalam tantangan ini, pengguna akan bergiliran menyelesaikan tiga tugas pengkodean yang cukup sederhana dalam bahasa pemrograman yang dibiarkan semakin tua.
Jawaban pertama harus menggunakan bahasa pemrograman yang dibuat pada tahun 2015. Begitu ada setidaknya satu jawaban dari bahasa 2015, jawaban dapat menggunakan bahasa pemrograman yang dibuat pada tahun 2014. Demikian pula, jawaban yang menggunakan bahasa dari tahun 2013 tidak diperbolehkan sampai ada setidaknya satu jawaban 2014.
Secara umum, penggunaan bahasa pemrograman dari tahun Y tidak diperbolehkan sampai jawaban yang menggunakan bahasa dari tahun Y + 1 telah dikirimkan. Satu-satunya pengecualian adalah Y = 2015.
Menemukan Tahun Bahasa Anda
Untuk menjawab pertanyaan ini, Anda harus tahu tahun "bahasa pemrograman Anda" dibuat. Ini, tentu saja, adalah istilah subjektif; beberapa bahasa dikembangkan selama beberapa tahun, dan banyak bahasa masih ditingkatkan setiap tahun. Biarkan tahun suatu bahasa "dibuat" menjadi tahun pertama implementasi untuk bahasa itu muncul di masyarakat umum.
Sebagai contoh, Python "dibuat pada" 1991 , meskipun pengembangannya telah berlangsung sejak 1989, dan versi 1.0 tidak dirilis sampai 1994.
Jika tahun ini masih subyektif, gunakan akal sehat Anda untuk memilih tahun yang paling tepat. Jangan terjebak dalam sedikit perbedaan pendapat tentang pilihan tahun. Harap berikan tautan ke sumber yang menyebutkan kapan bahasa Anda dibuat.
Versi atau standar yang berbeda dari bahasa pemrograman (misalnya Python 1, 2, 3) dihitung sebagai bahasa yang sama dengan tahun awal yang sama.
Jadi, kecuali tahun bahasa Anda adalah tahun 2015, Anda hanya dapat mengirim jawaban Anda begitu jawaban telah dikirimkan yang tahun bahasanya adalah tahun tepat sebelum Anda.
Jika jawaban yang valid dengan tahun yang sama dengan Anda sudah ada, maka Anda dapat menjawab. Tidak masalah apakah bahasa Anda dikembangkan lebih awal atau lebih lambat pada tahun itu.
Tugas
Anda harus menyelesaikan Tugas 1 hingga 3. Tugas 0 bersifat opsional.
Tugas-tugas ini lebih atau kurang dipilih untuk sesuai dengan tiga aspek penting pemrograman: memberikan output (Tugas 1), pengulangan (Tugas 2), dan rekursi (Tugas 3).
Tugas 0 - Sejarah Bahasa (opsional)
Tulislah setidaknya satu paragraf yang menjelaskan sejarah bahasa pemrograman pilihan Anda: siapa yang mengembangkannya, mengapa, bagaimana, dll. Hal ini terutama didorong jika Anda secara pribadi ada di sekitar ketika bahasa tersebut muncul, dan mungkin bahkan berperan dalam pengembangannya. Jangan ragu untuk mengaitkan anekdot pribadi tentang pengaruh bahasa terhadap Anda atau pekerjaan Anda, atau hal-hal seperti itu.
Jika Anda terlalu muda untuk tahu banyak tentang sejarah bahasa Anda tanpa banyak penelitian, pertimbangkan untuk meninggalkan catatan untuk pengguna yang lebih tua yang mengatakan mereka dapat mengedit posting Anda dan menambahkan beberapa riwayat tangan pertama.
Tugas 1 - "Halo, Dunia!" Varian
Tulis program yang mencetak
[language name] was made in [year made]!
ke area output standar bahasa Anda (stdout untuk sebagian besar bahasa terbaru).
Misalnya, jika bahasanya adalah Python, hasilnya adalah:
Python was made in 1991!
Tugas 2 - ASCII Seni N
Tulis program yang memungkinkan pengguna memasukkan bilangan bulat ganjil (Anda dapat menganggap bahwa input selalu valid), dan mencetak huruf ASCII art N yang dibuat menggunakan karakter N
.
Jika inputnya 1, outputnya adalah:
N
Jika inputnya adalah 3, outputnya adalah:
N N
NNN
N N
Jika inputnya 5, outputnya adalah:
N N
NN N
N N N
N NN
N N
Jika inputnya 7, outputnya adalah:
N N
NN N
N N N
N N N
N N N
N NN
N N
Polanya berlanjut seperti ini. Output mungkin berisi spasi tambahan.
Tugas 3 - GCD
Tulis sebuah program yang memungkinkan pengguna memasukkan dua bilangan bulat positif (Anda mungkin menganggap input selalu valid), dan mencetak pembagi umum terbesar mereka . Ini didefinisikan sebagai bilangan bulat positif terbesar yang membagi kedua angka tanpa meninggalkan sisanya. Ini dapat dengan mudah dihitung menggunakan algoritma Euclidean .
Contoh:
8
, 12
→ 4
12
, 8
→ 4
3
, 30
→ 3
5689
, 2
→ 1
234
,876
→6
Anda dapat menggunakan fungsi bawaan tetapi coba cari tahu apakah itu ada di versi pertama bahasa Anda. Jika tidak, cobalah untuk tidak menggunakannya.
Aturan
- Anda dapat menjawab beberapa kali, tetapi setiap jawaban baru harus menggunakan bahasa yang dibuat setidaknya 5 tahun sebelum bahasa dalam jawaban terakhir Anda. Jadi, jika Anda menjawab dengan bahasa 2015, Anda tidak bisa menjawab lagi sampai bahasa 2010 diizinkan. Jika Anda mulai dengan jawaban 2010, Anda tidak dapat membuat 2015 menjawab jawaban kedua Anda karena 2015 bukan sebelum 2010.
- Jika memungkinkan, tulis kode Anda sehingga bisa digunakan di versi pertama bahasa Anda (atau versi setua mungkin). (Ini bukan persyaratan karena menemukan kompiler / penerjemah lama untuk beberapa bahasa mungkin sulit.)
- Jangan memposting bahasa yang telah diposkan kecuali jawaban yang diposkan memiliki kesalahan signifikan atau Anda memiliki cara yang sangat berbeda dalam menyelesaikan tugas.
- Golf kode Anda baik-baik saja tetapi tidak diperlukan.
- Baris baru yang tertinggal dalam output dari program apa pun tidak masalah.
- Untuk tugas 2 dan 3, semua nilai input di bawah maksimum yang wajar seperti 2 16 harus berfungsi (paling tidak 256).
- Bahasa Anda harus sudah ada sebelum pertanyaan ini diposting.
- Bahasa pemrograman yang sangat lama mungkin memiliki bentuk input dan output yang berbeda dari yang kita pikirkan saat ini. Ini baik Selesaikan tugas dengan kemampuan terbaik Anda dalam konteks bahasa Anda.
Mencetak gol
Skor kiriman Anda adalah:
upvotes - downvotes + (2015 - languageYear) / 2
Dengan demikian, 0,5 ditambahkan ke penghitungan suara untuk setiap tahun sebelum 2015, memberikan keuntungan untuk bahasa yang lebih tua. Pengajuan dengan skor tertinggi akan menang.
Daftar Jawaban
Cuplikan Stack di bawah ini mencantumkan semua jawaban yang valid sesuai dengan tahun bahasa mereka.
Anda harus memulai posting Anda dengan garis Penurunan harga ini untuk memastikannya terdaftar dengan benar:
#[year] - [language name]
Sebagai contoh:
#1991 - Python
Nama bahasa mungkin ada di tautan (itu akan menjadi tautan yang sama di daftar jawaban):
#1991 - [Python](https://www.python.org/)
Jawaban yang tidak mengikuti format ini, atau memiliki tahun yang belum diizinkan, atau berasal dari pengguna yang sudah dijawab dalam 5 tahun terakhir ditandai sebagai tidak valid.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script>$(function(){function e(e,r){var a="https://api.stackexchange.com/2.2/questions/48476/answers?page="+e.toString()+"&pagesize=100&order=asc&sort=creation&site=codegolf&filter=!YOKGPOBC5Yad160RQxGLP0r4rL";$.get(a,r)}function r(e){if(e.items.forEach(function(e){var r=e.link,a=e.owner.display_name,i=e.body.match(/<h1\b[^>]*>(\d{4}) - (.*?)<\/h1>/);if(i&&i.length>=3)var h=parseInt(i[1]),u=i[2];h&&u&&n>=h&&h>=t&&(!d.hasOwnProperty(e.owner.user_id)||d[e.owner.user_id]-h>=p)?(d[e.owner.user_id]=h,h==t&&--t,o.hasOwnProperty(h)||(o[h]=[]),o[h].push({language:u,user:a,link:r,score:e.score+(n-h)/2})):s.push(' <a href="'+r+'">'+a+"</a>")}),e.has_more)runQuery(++a,r);else{for(var i=n,h=[];o.hasOwnProperty(i);){for(var u=$("<tr>").append($("<td>").text(i.toString())),l=$("<td>"),c=$("<td>"),g=$("<td>"),f=0;f<o[i].length;f++){var v=o[i][f];l.append(v.language),c.append($("<a>").html(v.user).attr("href",v.link)),g.append(v.score),f+1<o[i].length&&(l.append("<br><br>"),c.append("<br><br>"),g.append("<br><br>"))}u.append(l).append(c).append(g),h.push(u),--i}$("#answers").find("tbody").append(h),s.length>0?$("#invalid").append(s):$("#invalid").remove()}}var a=1,n=2015,t=n-1,p=5,o={},s=[],d={};e(1,r)})</script><style>html *{font-family: Helvetica, Arial, sans-serif;}table{border: 4px solid #a4a; border-collapse: collapse;}th{background-color: #a4a; color: white; padding: 8px;}td{border: 1px solid #a4a; padding: 8px;}div{font-size: 75%;}</style><table id='answers'> <tr> <th>Year</th> <th>Language</th> <th>User (answer link)</th> <th>Score</th> </tr></table><div id='invalid'><br>Invalid Answers:</div>