Tulis program yang menerima satu huruf kecil sebagai input dan menampilkan jumlah pasangan huruf yang memiliki jumlah huruf yang sama di antara mereka dalam kata seperti dalam alfabet.
Misalnya, dalam kata 'alam', kami memiliki 4 pasangan:
- nr: karena ada tiga huruf di antara mereka di dalam kata (a, t, u) dan tiga huruf di antara mereka dalam alfabet (o, p, q)
- ae: karena ada tiga huruf di antara mereka di dalam kata (t, u, r) dan tiga huruf di antara mereka dalam alfabet (b, c, d)
- tu: karena tidak ada huruf di antara mereka di dalam kata dan tidak ada huruf di antara mereka dalam alfabet
- tr: karena ada satu huruf di antara mereka di dalam kata (u) dan satu huruf di antara mereka dalam alfabet
Karena ada empat pasangan, output dalam kasus ini harus 4.
rjjjnfffr
? Apakah itu satu pasang (nr
) atau dua pasang (nr
danrn
)? Dan bagaimanaabzab
? Apakah itu dua pasangab
atau satu?Jawaban:
Pyth, 19 byte
Cobalah online: Demonstrasi
Penjelasan:
sumber
R, 110 byte
Diturunkan:
sumber
Oktaf, 41 byte
sumber
CJam, 36 byte
Cobalah secara Online.
sumber
J, 27 byte
Pemakaian:
Penjelasan:
Cobalah online di sini.
sumber
CJam, 25 byte
Cobalah online
Penjelasan:
sumber
JavaScript (ES6), 98 byte
Pemakaian
Penjelasan
sumber
Python 2, 91 karakter
sumber
MATLAB, 84 byte
Baris ini meminta string sebagai input. Itu kemudian menciptakan semua pasangan surat yang mungkin dan melakukan hal yang sama untuk indeks yang sesuai. Lalu kami menentukan apakah perbedaan (absolut) dari nilai cocok untuk akhirnya menjumlahkan semua kasus di mana itu terjadi. Hasilnya ditampilkan di jendela perintah.
sumber
JavaScript ES7, 93
Menggunakan pemahaman array . ES6 dengan
.map.map.map
lebih lama 2 byte.Tes menjalankan cuplikan di bawah ini dengan Firefox
sumber
PowerShell,
114100 BytesCukup mudah, tetapi menggunakan beberapa trik.
param(..)
mengambil input kami, menyimpannya$a
.$b
menjadi.length
input kami. Ini menghemat satu byte nanti.0..($b-1)|%{..}
adalah setara denganfor($i=0;$i-le($b-1);$i++){..}
loop, tetapi jauh lebih pendek.$i
untuk menjaga agar ...($_+1)..$b|%{..}
selanjutnyafor
loop , karena$_
hanya posisional ke loop dalam.+
untuk menyimpan banyak byte)-eq
sesuai dengan perbedaan posisi dalam array. Karena kami secara eksplisit diberi input huruf kecil, kami tidak perlu melakukan konversi huruf besar-kecil. Pernyataan ini akan mengembalikan salah satuTrue
atauFalse
.$o
, jadiTrue
akan menambahkan 1, sementaraFalse
akan menambahkan 0.$o
. Perhatikan bahwa kita perlu melakukan trik-cor-ke-int yang sama dengan+
untuk menghindari pencetakanFalse
jika tidak ada kecocokan.sumber
Ruby, 74
Tidak ada yang super menarik di sini. Saya ingin sekali menggunakannya
eval("s[i].#{["succ"]*(j-i)*?.}")
tetapi ... sepertinya terlalu lama.sumber
Matlab
(94)(80)fungsi binomial melempar pengecualian bodoh ketika k lebih besar dari n dan saya tidak bisa menangkap pengecualian di dalamSiapa yang butuh fungsi bawaan ??arraycell
fungsi, kalau tidak saya bisa golf lebih.Sekarang saya bisa melakukannya dengan tangan, menyederhanakan binomial (n, 2) = n / (2 (n-2)!) = N (n-1) / 2. menyatakan bahwa nilai terakhir ini merepresentasikan jumlah bilangan bulat dari 1 ke n-1, ini tidak membuang pengecualian dalam matlab, Tuhan memberkati matematika.
Ps: metode ini berbeda dari slvrbld
Eksekusi
sumber