Tr: 17 13 karakter
(Atau 14 10 jika Anda hanya menghitung argumen ...)
tr -s ta-s -1
Contoh dijalankan:
bash-4.3$ tr -s ta-s -1 <<< heads
1
bash-4.3$ tr -s ta-s -1 <<< tails
-1
Penjelasan singkat:
tr
singkatan transliterate, yang berarti, menggantikan setiap karakter dari input yang ditemukan dalam argumen pertama dengan karakter pada posisi yang sama dalam argumen kedua:
tr ta -1 <<< tails # replaces t ⇢ -, a → 1
⇒ -1ils
Jika argumen pertama lebih panjang, karakter tanpa kecocokan posisional dalam argumen kedua diganti dengan karakter terakhir argumen kedua:
tr tals -1 <<< tails # replaces t ⇢ -, a → 1, l → 1, s → 1
⇒ -1i11
Ketika opsi -s
( --squeeze-repeats
) digunakan, karakter berturut-turut yang akan diganti dengan karakter yang sama diganti sekaligus:
tr -s tals -1 <<< tails # replaces t ⇢ -, a → 1, l+s → 1
⇒ -1i1
Jadi jika kita menghitung semua karakter dalam "ekor", kita mendapatkan apa yang kita butuhkan:
tr -s tails -1 <<< tails # replaces t ⇢ -, a+i+l+s → 1
⇒ -1
Sama untuk "kepala", tetapi kita harus menjaga "t" di depan untuk mengkonsumsi minus (karakter diurutkan menurut abjad untuk creepiness):
tr -s taedhs -1 <<< heads # replaces h+e+a+d+s → 1
⇒ 1
Menggabungkan semua karakter unik "ekor" dan "kepala" dalam satu argumen pertama, menjaga "t" di depan mengarah ke solusi akhir:
tr -s tadehils -1 <<< tails # replaces t → -, a+i+l+s → 1
⇒ -1
tr -s tadehils -1 <<< heads # replaces h+e+a+d+s → 1
⇒ 1
Untuk menghindari penghitungan karakter, interval dalam format dari - ke dapat digunakan sebagai gantinya.