Buat program yang menghitung jumlah huruf yang umum untuk dua nama, dan temukan produk dengan panjangnya, berfungsi sebagai "tester cinta".
Ketentuan: Anda mungkin tidak mendapatkan jawaban 1: 1 (menjadi 3 dari 3, dll.)
Memasukkan
Dua nama dari STDIN atau alternatif terdekat.
Keluaran
Hitung x
sebagai jumlah total huruf yang sama antara kedua nama, abaikan case. Hitung y
sebagai produk dari panjang nama. Maka output, ke STDOUT atau alternatif terdekat, adalah
Name1 and Name2 have x out of y chances of love.
Contohnya
Memasukkan:
Wesley
Polly
Keluaran:
Wesley and Polly have 2 out of 30 chances of love.
Wesley dan Polly memiliki 2 huruf yang sama, y
dan l
, dan produk dari panjangnya adalah 6 * 5 = 30.
Memasukkan:
Bill
Jill
Keluaran:
Bill and Jill have 3 out of 16 chances of love.
Bonus
- Kurangi 30 byte untuk menggunakan fraksi yang disederhanakan, yaitu
x out of y
dalam bentuk sepenuhnya berkurang.
Papan peringkat:
Peringkat akan ditentukan oleh bahasa. Golf kode berakhir pada 17 Oktober pukul 10.20 malam Waktu Siang Pasifik (California)
Hadiah Rep
- Anda akan menerima 10 rep (upvote) karena berada di 5 teratas (kecuali tempat pertama).
- Anda akan menerima 15 rep (entri yang diterima) karena menjadi yang pertama.
- Anda mungkin juga mendapatkan hadiah karunia dari orang lain.
Berikut ini adalah Stack Snippet untuk menghasilkan leaderboard reguler dan tinjauan pemenang berdasarkan bahasa. **
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
# Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
# Ruby, <s>104</s> <s>101</s> 96 bytes
** Potongan tumpukan dari Sign That Word oleh Kslkgh
Selamat untuk yang berikut ini:
- Pemenang Dennis (Pyth)
- Dennis (CJam)
- NBZ (APL)
- molarmanful (JavaScript ES6)
- Alex A. (Julia)
Aaron\nAhmad
? Atausamename\nsamename
?a
danb
beberapa huruf, apakah itu termasukmin(a,b)
pengulangan?Jawaban:
Pyth, 40 byte
Kode panjangnya 70 byte dan memenuhi syarat untuk bonus -30 byte .
Cobalah online.
sumber
Dyalog APL ,
9491-30 = 61 byteBiasanya golf APL menghasilkan kode yang lebih kompak - tetapi tidak lebih kompleks - dari biasanya, tetapi dalam hal ini saya menyimpan karakter dengan cara yang jelek:
,⍪'out of' 'chances of'
buat tabel angka 2 × 2 (kiri) dan teks (kanan)×/≢¨⍵
produk yang panjangnya32|⎕UCS¨⍵
selaras dengan nilai UCS huruf besar dan kecil≢⊃∩/
, persimpangan dua set⊢÷∨/
membagi penghitungan dan produk dengan GCD mereka,' love.',⍨∊
membuatnya menjadi daftar sederhana dan menambahkan cinta.⍵,⍪'and' 'have'
buat 2 × 2 tabel nama (kiri) dan teks (kanan)∊' ',¨
tambahkan spasi ke setiap sel tabel dan kemudian buat daftar sederhana1↓
jatuhkan ruang berlebihan awalBerkat ngn untuk -3 byte.
sumber
'Wesley' 'Polly'
. Jika Anda berpikir ini akan lebih adil, jangan ragu untuk menambahkan⎕
(U + 2395) ke akhir baris (setelah}
), dan menyesuaikan skor menjadi 65.Javascript ES6, 123 byte
Begitu banyak untuk "cinta" ... Aku benar-benar bisa melakukannya dengan byte lebih sedikit.
Jalankan cuplikan kode di Firefox.
Tampilkan cuplikan kode
sumber
Julia, 129 byte
Kode ini 159 byte tetapi memenuhi syarat untuk bonus -30.
Ini mungkin bisa diperpendek dengan tidak memilih bonus, tetapi saya ingin memamerkan tipe angka rasional Julia. :)
Tidak Disatukan:
The
Rational()
Fungsi membangun sebuah objek dari tipeRational
yang memiliki bidangnum
danden
, sesuai dengan pembilang dan penyebut masing-masing. Manfaat menggunakan jenis ini di sini adalah bahwa Julia melakukan pengurangan untuk kita; kita tidak perlu khawatir tentang mengurangi pecahan itu sendiri.sumber
CJam, 55 byte
Kode panjangnya 85 byte dan memenuhi syarat untuk bonus -30 byte .
Cobalah online di penerjemah CJam .
Bagaimana itu bekerja
sumber
Dyalog APL, 84-30 = 54 byte
∊' and ' ' have' 'out of' 'chances of love.',¨⍨⊢,{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}(,÷∨)(×/≢¨)
Ini adalah kereta , terinspirasi oleh jawaban Adám .
×/≢¨
produk dari panjang{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵}
peluang cinta(,÷v)
Rangkaian dibagi dengan GCD; antara dua ekspresi di atas, ini mengurangi fraksi⊢,
tambahkan nama,¨⍨
mengacak string di sebelah kiri dengan nilai di sebelah kanan∊
meratakanPerhitungan "Peluang cinta" secara rinci:
{+/⌊⌿+⌿↑1↑¨⍨-32|⍉⎕ucs↑⍵} ↑⍵ arrange the names in a 2×N matrix, pad with spaces ⎕ucs take ascii codes ⍉ transpose the matrix as N×2 32| modulo 32 to case-fold 1↑¨⍨- for each X create a vector 0 0...0 1 of length X ↑ arrange into a 3d array, pad with 0s +⌿ 1st axis sum, obtain freqs per letter and per name ⌊⌿ 1st axis min, obt. nr of common occurrences per letter +/ sum
test , test2
sumber
Java 8, 192 byte
Ex:
sumber
Ruby, 153 byte
Lebih lama dari yang saya harapkan. Saya tidak tahu apakah bonus 30 byte berlaku untuk ini.
sumber
Python 2.7, 161 byte
Uji di sini: http://ideone.com/jeoVgV
Dan ini adalah versi yang menyederhanakan fraksi:
Sayangnya skor yang satu ini adalah 219-30 = 189 ...
sumber