Anda adalah Pengguna: Buat Persyaratan

15

Bos saya * tidak mengerti mengapa programmernya bereaksi negatif terhadap pengguna yang mengubah persyaratan program. Bantu dia mengerti! Pada setiap jawaban, buat persyaratan baru. Kemudian, tulis program / fungsi yang memecahkan persyaratan itu dan semua persyaratan sebelumnya, sementara dalam bahasa pemrograman baru.

Contohnya

Pengguna 1 memposting jawaban pertama. Dia menetapkan bahwa program harus menampilkan "Halo, Dunia." Dia membuat program di Jawa yang menampilkan "Halo, Dunia."

Pengguna 2 memposting jawaban kedua. Dia menetapkan bahwa program harus menerima input n dan output perdana ke- n , hingga jumlah bahasa maks. Dia menciptakan program di C ++ yang menerima input n dan output n th prima dan output "Hello, World." Dia tidak bisa membuat program di Jawa.

Pengguna 3 memposting jawaban ketiga. Dia menetapkan bahwa sumber program tidak dapat memuat teks "Halo". Dia menciptakan fungsi dalam Python yang menerima input n dan menghasilkan perdana ke- n dan "Halo, Dunia." sementara tidak menggunakan teks "Halo" di sumbernya. Dia tidak bisa membuat program di Java atau C ++.

Format Jawaban

#Answer # - <language name> [version, if pertinent]

Requirement: <rule>.

<code>

[explanations, encoding, TIO link, etc.]

Jawab Aturan

  • Jawabannya harus mengikuti format di atas, atau serupa.

  • Jawabannya bisa berupa program atau fungsi.

  • Jawabannya harus memenuhi semua persyaratan hingga dan termasuk jawaban saat ini.

  • Pengguna yang sama tidak boleh memposting dua jawaban berturut-turut.

  • Jika dua jawaban diposkan dengan nomor yang sama, yang diposkan kemudian harus dihapus.

  • Jangan mengedit persyaratan Anda kecuali Anda mengacaukannya dan tidak ada jawaban lain yang diposting.

  • Jika jawaban Anda tidak mematuhi aturan Anda dan semua aturan lainnya, itu tidak valid. Coba perbaiki ini sebelum orang lain memposting jawaban berikutnya.

  • Versi berbeda dari bahasa yang sama hanya dihitung sebagai bahasa yang berbeda jika program atau fungsi yang dibuat di kedua versi akan berperilaku berbeda di versi lain.

  • Jawabannya mungkin tidak menerima input apa pun yang tidak diperlukan, dan mungkin tidak menghasilkan apa pun yang tidak diperlukan kecuali untuk spasi yang diperlukan. Namun, sementara di belakang layar program harus memenuhi semua persyaratan "tersembunyi" (dari pengguna), ia dapat melakukan apa pun yang Anda inginkan, terutama jika Anda harus memenuhi persyaratan waktu eksekusi.

Ketentuan Persyaratan

  • Persyaratan hanya harus menentukan satu persyaratan. Persyaratan ini bisa bersyarat, dan jika persyaratan ini membutuhkan input dan / atau output, ini dapat dimasukkan.

  • Persyaratan tidak boleh menghapus atau mengubah persyaratan sebelumnya, atau bertentangan dengan mereka, tetapi dapat memperpanjang satu (sebutkan mana).

  • Jika persyaratan membatasi sumber (sumber ), atau membutuhkan teks di sumbernya, ia hanya dapat menghapus satu string (misalnya 0, Hello), atau memerlukan satu karakter.

  • Persyaratan tidak dapat mengharuskan sumber berada di bawah 100 byte, memerlukan pengkodean khusus, atau, dalam dan dari dirinya sendiri, mengesampingkan mayoritas bahasa umum.

  • Persyaratan tidak boleh memaksa sumber untuk menyesuaikan dengan pola tertentu (misalnya, memulai setiap baris dengan karakter tertentu, atau (@Conor) hashing ke nilai tertentu) selain dari yang ditentukan dalam sumber terbatas.

Ini adalah , jadi semua jawaban dibangun berdasarkan jawaban sebelumnya. Saya dan mungkin orang lain akan mencoba membuat daftar semua persyaratan. Untuk melihat jawaban secara berurutan, Anda dapat mengurutkan berdasarkan yang terlama. Untuk melihat jawaban terbaru, urutkan berdasarkan yang terlama, lalu navigasikan ke akhir daftar.

Cara Menang (diubah untuk penahanan suara):

Ketika tidak ada jawaban yang diposting selama dua minggu, tantangan sudah berakhir, dan skor akan dihitung. Skor akan dihitung dengan menjumlahkan jumlah total jawaban oleh setiap pengguna, tetapi menentukan bobot berdasarkan seberapa jauh ke dalam rantai mereka (karena posting selanjutnya memiliki lebih banyak persyaratan, mereka lebih sulit).

Kodesemu:

for each answer in user.Answers {
   score += 1 + (answer.number / 100)
}

Contoh:

Sally memiliki tiga jawaban. Dia memposting jawaban 5, jawaban 7, dan jawaban 20.

Skor nya akan 1.05 + 1.07 + 1.2 = 3.32. Jika itu adalah jumlah jawaban yang lurus, nilainya adalah 3, tetapi bobot kedalaman rantai memberikan jawaban yang lebih sulit.

Untuk memulai:

Inilah persyaratan pertama, yang diberikan oleh bos saya *:

Persyaratan 0: Program harus menampilkan 0 sebelum yang lainnya.

*khayali

Daftar Persyaratan dan Bahasa

Perhatikan bahwa ini mungkin sudah ketinggalan zaman - silakan lihat jawaban yang diposting terakhir segera sebelum memposting jawaban Anda untuk memastikan Anda memenuhi setiap persyaratan. Saya sangat menyesal jika Anda membuat program yang sangat bagus, hanya untuk seseorang yang menembaknya - jika Anda benar-benar ingin mempostingnya, tentukan tidak bersaing.

Penuh (tapi mungkin tidak terkini) Persyaratan: Tidak dapat berisi 0, *atau ]dalam kode sumber, dan tidak dapat menggunakan builtin join-on-newline. Output 0, kemudian mengambil input integer non-negatif ndan output baris baru diikuti oleh nangka Fibonacci ke -0 yang diindeks (dapat 1diindeks), diikuti oleh baris baru, diikuti oleh input yang sama n kuadrat, diikuti oleh baris baru, diikuti oleh ndikalikan oleh input baru m, diikuti oleh baris baru, diikuti oleh 10^B, di mana Bjumlah byte dalam kode sumber, diikuti oleh baris baru, diikuti oleh nbilangan 0prima yang diindeks (mungkin juga 1diindeks), diikuti oleh baris baru, diikuti oleh Pembagi Umum Terbesar dari n dan m.

0: Program harus menampilkan 0sebelum yang lain. Bahasa: N / A
1: Sumber program tidak dapat mengandung 0. Bahasa: 05AB1E
2: Program ini mengambil input bilangan bulat non-negatif ndan mengeluarkan baris baru diikuti oleh 0nomor Fibonacci nex yang terindeks (dapat 1diindeks). Bahasa: dc
3: Program mengeluarkan baris baru, diikuti oleh input nkuadrat yang sama . Bahasa: J
4: Program mengeluarkan baris baru, diikuti dengan ndikalikan dengan input baru m. Bahasa: Ohm
5: Program tidak dapat berisi *(kode ASCII 0x2A). Bahasa: Python 3
6: Program mengeluarkan baris baru, diikuti oleh 10^B, di mana Bjumlah byte dalam kode sumber. Bahasa: Mathematica
7: Program mengeluarkan baris baru, diikuti oleh nbilangan 0prima berindeks (mungkin juga 1terindeks). Bahasa: JavaScript (ES6)
8: Program ini tidak menggunakan built-on-newlines builtin, tetapi dapat menggunakan builtin join lainnya. Bahasa: Jelly
9: Program mengeluarkan baris baru diikuti oleh Pembagi Umum Terbesar dari n dan m. Bahasa: Scala
10: Program tidak dapat memuat ]. Bahasa: Pyth

Skor Saat Ini (dipesan oleh pos pertama)

Okx : 1.01
R. Kap : 2.09
Conor O'Brien : 1.03
Nick Clifford : 1.04
Eric Rose : 1.05
Greg Martin : 1.06
Erik the Outgolfer : 2.18
math_junkie : 1.09

Stephen
sumber
3
Mengapa menerima jawaban terakhir? Itu membuatnya seperti Anda menang karena menambahkan persyaratan yang tidak dapat dipenuhi oleh siapa pun.
xnor
5
Misalnya, "hash md5 dari program ini harus ..."
Conor O'Brien
2
Bahkan jika aturan itu berlaku untuk mencegah persyaratan yang mengakhiri rantai, saya masih berpikir memiliki "kondisi menang" mendorong orang untuk membuat aturan yang hampir tidak mungkin daripada yang menyenangkan.
xnor
2
@StephenS Yah, orang-orang tampaknya tidak bermain untuk menang, jadi sepertinya kekhawatiran saya salah tempat.
xnor
2
Ini harus disebut 'Scope Creep'
NonlinearFruit

Jawaban:

2

Jawaban 10 - Pyth

Persyaratan: Mengambil dua input, n(> = 0) dan m. Output 0 tanpa menggunakan 0, *atau ]di mana saja dalam kode sumber, dan tanpa builtin untuk bergabung di baris baru. Kemudian menampilkan garis baru diikuti oleh 1nomor Fibonacci -indexed (dapat 0diindeks), diikuti oleh baris baru, diikuti oleh nkuadrat, diikuti oleh baris baru, diikuti oleh ndikalikan dengan m, diikuti oleh baris baru, diikuti oleh di 10^Bmana Bjumlah byte dalam kode sumber, diikuti oleh baris baru dan nbilangan 1prima yang diindeks (mungkin juga 0diindeks), dan akhirnya diikuti oleh baris baru dan Pembagi Umum Terbesar untuk n dan m.

JU2KE=H2VQ=+Js>2J=+YK=hHW!P_H=hH;jb[ZeJ^Q2sY^T51HiK

Penerjemah online

Erik the Outgolfer
sumber
Ya ini juga golf :-)
Erik the Outgolfer
Juga, sebelum berkomentar, tidak, saya tidak bisa hanya menggunakan jalih-alih jb, karena saya akan menggunakan joinin-on-newlines bawaan.
Erik the Outgolfer
6

Jawaban 1 - 05AB1E

Persyaratan: Mencetak 0... tanpa 0kode sumber

¾
Okx
sumber
4

Jawaban 3 - J

echo"+(1-1),(*:,~[:+/@:!&i.-)@".1!:1(3)

Persyaratan: Output 0tanpa 0dalam kode sumber, kemudian mengambil input integer non-negatif ndan output baris baru diikuti oleh nomor Fibonacci 0-indexed n(dapat 1diindeks), diikuti oleh baris baru, diikuti oleh input yang sama nkuadrat.

Cobalah online!

Conor O'Brien
sumber
4

Jawaban 4 - Ohm

Persyaratan: Output 0tanpa 0dalam kode sumber, kemudian mengambil input integer non-negatif ndan output baris baru diikuti oleh nangka Fibonacci ke -0 yang diindeks (mungkin 1 diindeks), diikuti oleh baris baru, diikuti oleh input yang sama dan kuadrat, diikuti oleh baris baru, diikuti oleh ndikalikan dengan input baru m.

¼,≡ƒ,²,*,
Nick Clifford
sumber
4

Jawaban 2 - dc

12298P?sa1 1-sb1sc[lblcdsb+scla1-dsa1 1-<y]dsyxlcp

Persyaratan: Output 0tanpa 0dalam kode sumber, kemudian mengambil input integer non-negatif ndan output baris baru diikuti oleh angka Fibonacci 0-indexed n(dapat 1diindeks).

Cobalah online!

R. Kap
sumber
@ R.Kap Tidak masalah :)
Stephen
2
Ketika saya membaca persyaratan baru, untuk beberapa alasan saya mulai tertawa. +1.
Kamerad SparklePony
4

Jawaban 5 - Python 3

Persyaratan: Output 0 tanpa 0 dalam kode sumber, kemudian mengambil input integer non-negatif dan output baris baru diikuti oleh angka Fibonacci ke-0 yang diindeks (mungkin 1 diindeks), diikuti oleh baris baru, diikuti oleh input yang sama n kuadrat, diikuti oleh baris baru, diikuti oleh n dikalikan dengan input baru m. Jangan gunakan karakter *, kode ASCII 0x2A.

    def f(n, m):
        print(1-1)
        a = 1-1
        b = 1
        for i in range(n):
            c = a+b
            a = b
            b = c
        print(b)
        print(n.__mul__(n))
        print(n.__mul__(m))
EricRoe
sumber
3

Jawaban 6 - Mathematica

Persyaratan: Output 0 tanpa 0 atau * dalam kode sumber, kemudian mengambil input bilangan bulat n-negatif dan menampilkan baris baru diikuti oleh angka Fibonacci ke-0 yang diindeks (mungkin 1 diindeks), diikuti oleh baris baru, diikuti oleh input yang sama n kuadrat, diikuti oleh baris baru, diikuti oleh n dikalikan dengan input baru m, diikuti oleh baris baru, diikuti oleh 10 ^ B di mana B adalah jumlah byte dalam kode sumber.

((e=Echo)[1-1];e@Fibonacci@#;e[#^2];e[1##];2^# 5^#&@59)&
Greg Martin
sumber
1
Ya, karena itu edit saya yang tergesa-gesa setelah saya melihat bahwa EricRoe mengalahkan saya sebentar :)
Greg Martin
2

Jawaban 7 - JavaScript (ES6)

(a,b)=>String.fromCharCode(48)+'\n'+(m=(a)=>a>1?m(a-1)+m(a-2):1)(a)+'\n'+Math.pow(a,2)+'\n'+Math.exp(Math.log(a)+Math.log(b))+'\n'+1E257+'\n'+(T=(u,i=2,l=1-1,m=2)=>l<=u?(p=(o,z=2,s=1-1)=>z<o?p(o,z+1,s+(o%z<1&&z!=o)):s)(i)<1?T(u,i+1,l+1,i):T(u,i+1,l,m):m)(a)

Persyaratan: Suatu fungsi yang mengambil dua input, integer non-negatif ndan nomor apa pun mdan mengembalikan string yang berisi 0tanpa menggunakan 0kode sumber, lalu baris baru diikuti oleh 0angka nFibonacci -indeks yang 1diindeks (dapat diindeks), diikuti oleh baris baru, diikuti oleh nkuadrat, diikuti oleh baris baru, diikuti oleh ndikalikan dengan mtanpa menggunakan *dimanapun dalam kode sumber, diikuti oleh baris baru, diikuti oleh di 10^Bmana Bjumlah byte dalam kode sumber, dan akhirnya diikuti oleh baris baru dann bilangan 0prima yang diindeks (mungkin juga 1diindeks).

Cuplikan Tes

R. Kap
sumber
Anda bisa menghemat banyak byte dengan mengubah String.fromCharCode(48)ke1-1 . Bukan berarti itu benar-benar penting ;-) (Juga, ada dua nol di kemudian hari dalam kode sumber, yang dapat Anda perbaiki dengan cara yang sama)
ETHproductions
1

Jawaban 8 - Jelly

Persyaratan: Fungsi yang mengambil dua input, integer non-negatif ndan nomor apa pun mdan mengembalikan string yang berisi 0tanpa menggunakan 0kode sumber, lalu baris baru diikuti oleh 0angka nFibonacci -indeks yang 1diindeks (dapat diindeks), diikuti oleh baris baru, diikuti oleh nkuadrat, diikuti oleh baris baru, diikuti oleh ndikalikan dengan mtanpa menggunakan *dimanapun dalam kode sumber, diikuti oleh baris baru, diikuti oleh di 10^Bmana Bjumlah byte dalam kode sumber, dan akhirnya diikuti oleh baris baru dan nth 0-indexed (mungkin juga1-indexed) nomor utama. Tidak ada bawaan untuk bergabung dengan baris baru diizinkan, tetapi bergabung dengan bawaan masih diizinkan.

ÆḞṭØDW⁺¤;⁸²¤;×;ȷ25;⁸ÆN¤j⁷

Cobalah online!

Erik the Outgolfer
sumber
Ya ini golf.
Erik the Outgolfer
1

Jawaban 9 - Scala

Persyaratan : Mengambil dua input, n(> = 0) dan m. Output 0tanpa menggunakan 0atau *di mana pun dalam kode sumber, dan tanpa builtin untuk bergabung di baris baru. Kemudian menampilkan baris baru diikuti oleh 1nomor Fibonacci -indexed (dapat 0diindeks), diikuti oleh baris baru, diikuti olehn kuadrat, diikuti oleh baris baru, diikuti olehn dikalikan dengan m, diikuti oleh baris baru, diikuti oleh10^B mana Bjumlah byte dalam kode sumber, diikuti oleh baris baru dan nbilangan 1prima yang diindeks (mungkin juga 0diindeks), dan akhirnya diikuti oleh baris baru dan Pembagi Umum Terbesar untuk n dan m.

(n:Int,m:Int)=>{
 val z=1-1;val o=println _;var i=1;var j=z
 o(z)
 o((1 to n).foldLeft(z,1)((a,b)=>(a._2,a._1+a._2))._1)
 o(math.pow(n,2))
 o(List.fill(n)(m).sum)
 o(math.pow(9+1,299))
 while(j!=n){i+=1;if((2 to i-1)forall(i%_!=z))j+=1};o(i)
 o((1 to math.min(n,m)).filter(c=>n%c==z&&m%c==z).last)
}

Cobalah di sini

pecandu matematika
sumber