Tr: 17 13 Zeichen
(Oder 14 10, wenn Sie nur die Argumente zählen ...)
tr -s ta-s -1
Probelauf:
bash-4.3$ tr -s ta-s -1 <<< heads
1
bash-4.3$ tr -s ta-s -1 <<< tails
-1
Kurze Erklärung:
tr steht für transliterate, dh ersetzt jedes Zeichen der im ersten Argument gefundenen Eingabe durch ein Zeichen an derselben Stelle im zweiten Argument:
tr ta -1 <<< tails # replaces t ⇢ -, a → 1
⇒ -1ils
Wenn das erste Argument länger ist, werden die Zeichen ohne Positionsübereinstimmung im zweiten Argument durch das letzte Zeichen des zweiten Arguments ersetzt:
tr tals -1 <<< tails # replaces t ⇢ -, a → 1, l → 1, s → 1
⇒ -1i11
Wenn die Option -s( --squeeze-repeats) verwendet wird, werden aufeinanderfolgende Zeichen, die durch dasselbe Zeichen ersetzt würden, sofort ersetzt:
tr -s tals -1 <<< tails # replaces t ⇢ -, a → 1, l+s → 1
⇒ -1i1
Wenn wir also alle Zeichen in "Tails" auflisten, erhalten wir das, was wir brauchen:
tr -s tails -1 <<< tails # replaces t ⇢ -, a+i+l+s → 1
⇒ -1
Das Gleiche gilt für "Köpfe", aber wir müssen das "t" voranstellen, um das Minus zu verbrauchen (Buchstaben alphabetisch sortiert nach Gruseligkeit):
tr -s taedhs -1 <<< heads # replaces h+e+a+d+s → 1
⇒ 1
Das Zusammenführen aller eindeutigen Zeichen von "Tails" und "Heads" in einem einzigen ersten Argument, wobei "T" im Vordergrund bleibt, führt zur endgültigen Lösung:
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
Um die Aufzählung der Zeichen zu vermeiden, kann stattdessen ein Intervall im Format von - bis verwendet werden.