Terapkan pemecah aritmatika verbal dari beberapa urutan angka yang sama yang ditambahkan bersamaan:
TWO
+ TWO
-----
FOUR
REPEAT
REPEAT
REPEAT
+ REPEAT
--------
ANDSTOP
SPEED
+ SPEED
-------
KILLS
Ada beberapa batasan: setiap huruf harus mewakili angka yang berbeda, dan tidak ada huruf yang bisa nol.
Menerapkan pemecah sebagai fungsi operan, jumlah dan jumlah pengulangan mengembalikan daftar solusi (solusi: tupel dari operan dan jumlah yang dihasilkan). Sebagai contoh:
f(['T','W','O'], ['F','O','U','R'], 2) == [(734, 1468)]
Anda tidak perlu merepresentasikan variabel sebagai huruf, dan Anda tidak perlu menggunakan hash dalam solusinya. Pencarian dengan kekerasan diperbolehkan.
Kode terpendek menang.
Jawaban:
Mathematica
Spaces ditambahkan untuk kejelasan. Tidak banyak bermain golf.
Harus menggunakan huruf Yunani karena huruf input diperlakukan sebagai simbol.
Pemakaian:
Itu tidak menemukan solusi untuk SPEED + SPEED + SPEED = KILLS ... apakah itu bug?
Edit
Membiarkan nol, ia menemukan solusi berikut untuk persamaan SPEED + SPEED + SPEED = KILLS:
Edit
Menurut komentar:
sumber
Python
http://ideone.com/4wIQe
sumber
scala:
333289Pemakaian:
sumber
PHP (200)
Fungsi ini membutuhkan waktu yang sangat lama untuk mengeksekusi dan menggunakan banyak memori, tetapi memenuhi kriteria.
Penggunaan sampel:
Penjelasan un-golf:
Jika kami diizinkan untuk memasukkan operan dan menjumlahkan sebagai string, bukan array, maka saya dapat melewati operasi gabungan dan menyimpan 20 karakter untuk membuat total 180.
sumber