Sebagai seorang anak, kakak saya menunjukkan kepada saya perhitungan cinta kecil ini untuk melihat seberapa besar peluang yang Anda miliki untuk mendapatkan hubungan yang sukses dengan kekasih Anda. Yang Anda butuhkan hanyalah 2 nama dan selembar kertas.
- John
- Jane
Kemudian, Anda memisahkan nama-nama ini dengan kata Loves . Anda dapat menulis ini di satu baris atau di baris baru.
John
Loves
Jane
Kemudian perhitungan dimulai. Anda memulai dengan menghitung berapa kali karakter muncul dari kiri ke kanan dan jika Anda menggunakan garis baru juga dari atas ke bawah. Setiap karakter dihitung sekali, jadi setelah menghitung J John Anda tidak perlu menghitungnya lagi ketika Anda mulai dengan Jane. Hasil dari contoh ini adalah sebagai berikut:
J: 2 ([J] ohn | [J] ane)
O: 2 (J [o] hn | L [o] ves)
H: 1 (Jo [h] n)
N: 2 (Joh [n] | Ja [n] e)
__
L: 1 ([L] oves)
O: dilewati
V: 1 (Lo [v] es)
E: 2 (Lov [e] s | Jan [e])
S: 1 (Love [s] ])
__
J: dilewati
A: 1 (J [a] ne)
N: dilewati
E: dilewati
__
Hasil akhir: 2 2 1 2 1 1 2 2 1 1
Langkah selanjutnya adalah menambahkan digit yang bekerja dari luar ke tengah.
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (1 + 2 = 3)
2 2 1 2 1 1 2 1 1 (2 + 1 = 3)
2 2 1 2 1 1 2 1 1 (1)
__
Hasil: 3 3 3 3 1
Anda akan terus melakukan ini sampai Anda memiliki bilangan bulat yang tersisa kurang atau sama dengan 100.
3 3 3 3 1
4 6 3
76%
Bisa jadi jumlah 2 digit menjadi ≥ 10, dalam hal ini angkanya akan dibagi 2 pada baris berikutnya.
Contoh:
5 3 1 2 5 4 1 8
13 (Akan digunakan sebagai 1 3)
1 3 4 5 7
8 8 4 (8 + 4 = 12 digunakan sebagai 1 2)
1 2 8
92%
Persyaratan
- Program Anda harus dapat menerima nama apa pun dengan panjang yang masuk akal (100 karakter)
- Karakter [A..Z, a..z] diizinkan.
- Huruf besar-kecil sehingga A == a
Bebas bagi Anda untuk memutuskan
- Cara menangani karakter khusus (Ö, è, dll.)
- Sertakan nama belakang ya atau tidak, spasi akan diabaikan
- Bahasa apa pun diizinkan.
Pemenang akan ditentukan oleh suara pada tanggal 28 Februari Februari.
Selamat coding
Ps Ini adalah pertama kalinya saya meletakkan sesuatu di sini, jika ada cara untuk memperbaikinya, beri tahu saya = 3
Sunting: Tanggal akhir yang diubah menjadi hari kasih sayang, berpikir bahwa akan lebih sesuai untuk tantangan ini :)
sumber
1-love_result
:-)Jawaban:
Sclipting
Mengharapkan input sebagai dua kata yang dipisahkan oleh spasi (mis
John Jane
.). Ini case-insensitive, tetapi hanya mendukung karakter yang bukan karakter regex khusus (jadi jangan gunakan(
atau atas*
nama Anda!). Itu juga hanya mengharapkan dua kata, jadi jika minat cinta Anda adalah "Mary Jane", Anda harus memasukkanMaryJane
satu kata; jika tidak maka akan mengevaluasi "YourName mencintai Mary mencintai Jane".Penjelasan
Bagian tersulit adalah menangani kasus jumlah digit ganjil: Anda harus meninggalkan digit tengah saja alih-alih menambahkannya sendiri. Saya pikir solusi saya menarik.
Ketika Anda pergi dengan sesuatu ≤ 100, loop hanya akan berakhir, jawabannya akan ada di tumpukan dan karena itu output.
sumber
改
(case-insensitive string-replace) dalam menanggapi tantangan ini, tapi saya tidak akan memanfaatkannya di sini.Funciton
Program ini mengharapkan input dipisahkan oleh spasi (mis
John Jane
.). Huruf besar-huruf kecil untuk karakter AZ / az; untuk karakter Unicode lainnya, itu akan "membingungkan" dua karakter yang sama ketika ored dengan 32 (misalnyaĀ
danĠ
, atau?
dan_
). Selain itu, saya tidak tahu apa yang akan dilakukan program ini jika inputnya mengandung karakter NUL (\0
), jadi jangan gunakan itu :)Juga, karena StackExchange menambahkan terlalu banyak spasi baris, berikut adalah teks mentah pada pastebin . Atau, jalankan kode berikut di konsol JavaScript browser Anda untuk memperbaikinya di sini:
$('pre').css('line-height',1)
Penjelasan cepat
Program hanya mengambil STDIN dan memanggilnya
Ḷ
.Ḷ
menemukan spasi pertama dalam string, menggantinya denganloves
dan meneruskan hasilnya keỌ
.Ọ
berulang kali mengambil karakter pertama dari string input, panggilanṢ
dan menyatukan jumlah kemunculan ke string hasil. Ketika string input kosong, ia memanggilṾ
dengan string hasil.Ṿ
panggilan berulang kaliẸ
sampai mendapat hasil yang sama dengan"100"
atau memiliki panjang kurang dari 3. (100
benar-benar dapat terjadi: pertimbangkan inputlovvvv eeeeeess
.) Ketika itu terjadi, ia menambah"%"
dan mengembalikannya.Ẹ
menghitung satu iterasi lengkap dari algoritma cinta-komputasi; yaitu, dibutuhkan string digit dan mengembalikan string digit berikutnya.Ṛ
mengambil tumpukan jerami dan jarum dan menemukan indeks kemunculan pertama jarum di tumpukan jerami menggunakan kriteria ketidaksensitifan case-faux (or 32
).Ṣ
mengambil tumpukan jerami dan jarum dan berulang kali berlakuṚ
untuk menghapus semua contoh jarum . Ini mengembalikan hasil akhir setelah semua pemindahan serta jumlah pemindahan yang dilakukan.sumber
Rubi
Mencetak hati jika peluang hubungan melebihi 50%
Dan mencetak patah hati jika peluangnya di bawah 50% :(
Frigging John ...
Bagaimanapun, ini case-insensitive dan mendukung permintaan poligami (mis
ruby ♥.rb Alice Bob Carol Dave
.).sumber
APL, 80
Karena
cinta adalah cintakode-golf adalah kode-golf (meskipun tidak)Versi wajib berbentuk ♥ ︎:
Versi golf memberi saya perilaku yang agak tidak menentu, karena bug dengan
∪⍦
yang saya selidiki dengan pengembang NARS:Tapi saya bisa menjalankannya sedikit demi sedikit dan mendapatkan hasil yang benar:
sumber
Javascript
Mungkin bisa lebih bersih, tetapi berhasil. Contoh verbose
sumber
Python
Yah, saya pikir itu adalah kode-golf ...
Tidak Disatukan:
sumber
reduce(list.__add__,xyz)
dengansum(xyz,[])
. :)PHP
hasil sampel
sumber
GolfScript
Jawaban golf kode wajib dalam GolfScript:
Menerima input sebagai nama yang dipisahkan oleh spasi mis
sumber
C #
sumber
q[i] + q[j]
10 atau lebih besar?Haskell
Versi saya cukup panjang, itu karena saya memutuskan untuk fokus pada keterbacaan, saya pikir akan menarik untuk memformalkan algoritma Anda dalam kode. Saya menggabungkan jumlah karakter dalam lipatan kiri , itu pada dasarnya bola salju mereka bersama-sama dan urutan sesuai dengan kemunculannya dalam string. Saya juga berhasil mengganti bagian dari algoritma yang biasanya memerlukan pengindeksan array dengan bending daftar . Ternyata algoritma Anda pada dasarnya melibatkan melipat daftar angka menjadi dua dan menambahkan angka-angka yang disejajarkan bersama-sama. Ada dua case untuk bending, bahkan daftar terbelah di tengah dengan baik, daftar aneh membungkuk di sekitar elemen tengah dan elemen itu tidak ikut serta. Fission mengambil daftar dan membagi nomor yang bukan lagi satu digit, seperti> = 10 . Saya harus menulis unfoldl saya sendiri, Saya tidak yakin apakah itu sebenarnya buka , tetapi tampaknya melakukan apa yang saya butuhkan. Nikmati.
Beberapa hasil:
"Romeo" "Juliet" 97% - Pengujian empiris penting
"Romeo" "Julier" 88% - Versi singkat modern ...
"Horst Draper" "Jane" 20%
"Horst Draper" "Jane (Horse)" 70% - Sudah ada perkembangan ...
"Bender Bender Rodriguez" "Fenny Wenchworth" 41% - Bender Mengatakan "Lipat adalah untuk wanita!"
"Philip Fry" "Turanga Leela" 53% - Anda bisa tahu mengapa butuh 7 Musim bagi mereka untuk menikahi
"Maria" "Abraham" - 98%
"John" "Jane" 76%
sumber
Rubi
Diperkecil:
Sebut saja:
sumber
l=->a{...}
bukanl=lambda do|a|...end
, dan Anda juga bisa melakukanl[...]
bukanl.call(...)
.Python 3
Solusi sederhana yang tidak menggunakan modul. I / O cukup cantik.
Saya menggunakan error catching sebagai cadangan ketika iterator kedua berada di luar batas; jika menangkap kesalahan indeks Python, ia mengasumsikan 1. Aneh, tetapi berhasil.
Inilah contoh menjalankan:
sumber
for
padanames
langsung?25211111111.363221.485.98
. saya pikir Anda kode gagal untuk menambahkan 5 "a"Jawa
Bagaimana jika jumlahnya sama dengan 10? Saya baru saja menambahkan 1 dan 0, apakah itu benar?
Saya memutuskan untuk mengabaikan kasus.
memasukkan:
keluaran:
memasukkan:
keluaran:
sumber
C
Mungkin ada banyak peningkatan, tapi ini menyenangkan untuk dikodekan.
Dan tentu saja, versi golf wajib: 496
sumber
Python 3
Ini akan mengambil dua nama sebagai input. menanggalkan ruang ekstra dan kemudian menghitung cinta. Lihat output input untuk detail lebih lanjut.
memasukkan:
keluaran:
Atau, coba yang ini;)
memasukkan:
keluaran:
sumber
k, 80
Ini dia:
sumber
J
Inilah yang sederhana di J:
Dibutuhkan nama pada baris perintah, misalnya:
sumber
Asyik
Inilah versi asyik, dengan tes.
Penjelasan:
CodeGolf Groovy, 213 char
Melihat ini adalah codegolf, kita bisa inline penutupan dan turun ke ini:
simpan sebagai lovecalc.groovy. jalankan "groovy lovecalc john jane"
Keluaran:
sumber
Jawa
Ini mengambil 2 parameter String pada awal dan mencetak jumlah setiap karakter dan hasilnya.
Tentunya bukan yang terpendek (itu Java), tapi yang jelas dan mudah dibaca.
Jadi, jika Anda menelepon
Anda mendapatkan output
sumber
R
Tidak akan memenangkan penghargaan kekompakan apa pun, tetapi saya tetap bersenang-senang:
Diuji: valid untuk 'john' & 'jane' dan untuk 'romeo' & 'juliet'. per komentar saya di bawah pertanyaan,
sumber