“Tulis” kalkulator sederhana tanpa menulis satu baris kode pun


25

Sangat mudah:

Buat program tanpa menulis satu baris kode. Kode hanya dapat terdiri dari pertanyaan dan jawaban Stack Overflow yang ada.

Program harus membuat dua angka acak dan menampilkan angka

  • ditambahkan ke,
  • dikurangi dari,
  • dikalikan dengan dan
  • dibagi dengan

satu sama lain.

Aturan

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

  1. Anda dapat mengubah nama variabel, fungsi, dan metode. (Ini tidak berarti Anda dapat mengubah doa metode, dengan mengubah, katakan scanner.nextInt () menjadi scanner.nextLine () dan mengklaim bahwa Anda mengubah nama metode. Perubahan harus dalam definisi atau referensi ke entitas yang sama.). Solusinya harus tetap berfungsi jika variabel, fungsi atau metode akan diganti namanya lagi.

  2. Anda dapat menyesuaikan lekukan dengan tepat.

  3. Anda dapat mengasumsikan bahwa modul yang tepat dimuat agar snipet kode berfungsi. (misalnya, mengimpor pernyataan untuk Java dan Python, menggunakan pernyataan untuk C # dan C ++, dan yang setara dalam semua bahasa) Jika cuplikan kode menyertakan impor untuk Anda, Anda dapat memindahkannya ke bagian atas kode.

  4. Jika bahasa mengharuskan kode berada di semacam badan metode untuk mengeksekusi (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.

  5. Anda harus memberikan daftar eksplisit tentang perubahan nama variabel / metode / fungsi / kelas yang dilakukan.

  6. Anda tidak dapat mengambil cuplikan dari potongan (artinya jika Anda mengambil blok kode dari sebuah pos, Anda mengambil semuanya) Berikan deskripsi singkat tentang apa yang kode lakukan untuk orang-orang yang tidak akrab dengan bahasa yang Anda gunakan. Anda harus menggunakan cuplikan yang diposting sebelum tantangan ini dimulai.

Kontes popularitas, jadi yang paling unggul menang!

Batas waktu

Saya akan menerima pengajuan yang memiliki suara terbanyak sekitar akhir Agustus, 6.


Hai michael, dan selamat datang di pertukaran tumpukan PPCG! Salah satu aturan untuk tantangan kode di situs ini adalah bahwa mereka harus memiliki kondisi kemenangan yang objektif, jadi Anda harus memilih kondisi seperti itu untuk yang satu ini. Ini adalah tantangan serupa yang mungkin memberi Anda beberapa ide.
isaacg

Hai @isaacg, terima kasih. Saya akan melihat dan menghapus / mengedit yang ini.
chris p bacon

@isaacg, harap tidak apa-apa sekarang. Anda lebih berpengalaman daripada saya di sini, apakah tenggat waktu terlalu dekat / jauh?
chris p bacon

Jauh lebih baik. Tenggat waktu terlalu dekat, standar sekitar 1-2 minggu.
isaacg

Ok terima kasih lagi.
chris p bacon

Jawaban:


17

J, 7 pertanyaan / jawaban, tidak ada tentang J

echo a%b[echo a*b[echo a-b[echo a+b[b=:?2147483647 [a=:?2147483647

Itu cara yang sangat murah untuk melakukannya, aku tidak akan berbohong. Inilah jawaban SO yang saya gunakan:

Saya mengganti nama variabel foomenjadi adan bdalam kode.


Saya membayangkan mengambil pendekatan ini akan jauh lebih sulit di APL, tetapi masih ada peluang bagus untuk menemukan karakter dalam blok kode sendiri.
JohnE

1
@ JohnE Itulah keuntungan dari kebisingan ASCII!
Fatalkan

1
Saya suka jawaban ini, tetapi pertanyaannya menyatakan "Anda tidak dapat mengambil snippet snippet" - yang ini lakukan, kan?
hapus tanda

3
@unclemeat "jika Anda mengambil blok kode dari sebuah pos, Anda mengambil semuanya". Bagi saya kedengarannya seperti jika ada beberapa blok kode dalam sebuah posting, Anda dapat mengambil hanya satu, tetapi Anda tidak dapat mengambil bagian dari blok kode.
Fatalkan

Semua ini berasal dari blok kode lengkap - lihat sumbernya.
Sean Latham

7

Referensi Python 2, 7 6

Menciptakan solusi ini tidak semudah kelihatannya. Mencari Stack Overflow untuk kode tertentu sulit, karena simbol tidak termasuk dalam pencarian.

Saya telah menemukan cara untuk melakukan ini dengan angka acak 2000-bit, menggunakan jawaban yang berbeda sebagai pengganti Ref # 1, tetapi saya tidak dapat mengujinya di lingkungan online yang saya gunakan karena melibatkan getrandbits, yang memanggil os.urandom, memberi saya NotImplementedError, jadi saya pergi dengan cara ini sebagai gantinya. Ini sebenarnya bisa digunakan sekarang, dengan TIO.

Cobalah online

#assumed to be loaded
import random

n1 = []
n1.append(random.randint(1, 100))

n2 = []
n2.append(random.randint(1, 100))

r1 = map(sum, zip(n1, n2))
r2 = map(lambda t: t[0] - t[1] ,zip(n1, n2))

ab = [n1[i]*n2[i] for i in range(len(n1))]

r1, last = r1[0], r1[-1]
r2, last = r2[0], r2[-1]
ab, last = ab[0], ab[-1]
n2, last = n2[0], n2[-1]

print r1
print r2
print ab
ab = float(ab) / n2
ab = float(ab) / n2
print ab

Referensi

import random diasumsikan dimuat, karena pertanyaannya mengatakan itu diizinkan.

  1. lst = []dan lst.append(random.randint(1, 100))- Di sini

  2. map(sum, zip(r1, r2)), map(lambda t: t[0] - t[1] ,zip(r1, r2)), r1, Dan r2- Berikut

  3. result = float(a) / b- Di sini

  4. ab = [a[i]*b[i] for i in range(len(a))]- Di sini

  5. first, last = some_list[0], some_list[-1]- Di sini

  6. print x- Di sini

Berganti nama

  1. lstdiganti namanya menjadi n1dan n2(Ref # 1: Saya menggunakan seluruh kode dua kali)

  2. r1dan r2berganti nama menjadi n1dan n2(Ref # 2: Saya menggunakan variabel-variabel yang terpisah nanti, untuk menetapkan peta dan membagi dalam cetakan terakhir, karena jawabannya termasuk mereka.)

  3. resultdan adiubah namanya menjadi ab, dan bdiganti namanya menjadi n2(Ref # 3)

  4. adan bberganti nama menjadi n1dan n2(Ref # 4)

  5. firstdan some_listkedua berganti nama menjadi r1, r2, ab, atau n2, tergantung pada line. (Ref # 5: Saya menggunakan ini empat kali. Perhatikan bahwa hanya tugas pertama yang digunakan, jadi saya tidak mengganti nama last)

  6. xdiganti namanya menjadi r1,, r2atau ab, tergantung pada baris mana. (Ref # 6)


1

Desimal , 2 referensi

82D82D00D30001D30041D301212010D301200D30001D30042D301212010D301200D30001D30043D301212010D301200D30001D30044D30122

Perintah yang digunakan:

  • 0 SET (indeks tumpukan default)
  • 1 DORONG
    • 2 ARANG
  • 2 POP
  • 3 I / O
    • 00 tumpukan duplikat
    • 01 dari stack ke STDOUT
  • 4 MATI
    • 1 MENAMBAHKAN
    • 2 MENGURANGI
    • 3 BERKEMBANG BIAK
    • 4 MEMBAGI
  • 8 BUILTIN
    • 2 dorong bilangan bulat acak untuk ditumpuk

Versi yang dijelaskan:

82D       ; push random INT    - stack contains {r1}
82D       ; push random INT    - stack contains {r1, r2}

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
41D       ; math +             - stack contains {r1, r2, r1+r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
42D       ; math -             - stack contains {r1, r2, r1-r2}
301       ; print from stack to output
2         ; pop                - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
43D       ; math *             - stack contains {r1, r2, r1*r2}
301       ; print from stack to output
2         ;                    - stack contains {r1, r2}

12010D3012; print newline

00D300    ; duplicate stack[0] - stack contains {r1, r2, r1}
01D300    ; duplicate stack[1] - stack contains {r1, r2, r1, r2}
44D       ; math /             - stack contains {r1, r2, r1/r2}
301       ; print from stack to output

Sumber:

Cobalah online! Anda harus menonaktifkan cache output jika tidak dinonaktifkan secara otomatis.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.