このチャットメッセージに触発されました
あなたの仕事は、単語を取り、キーボード上のその文字の平均的な位置を文字として見つけることです。
キーボード・レイアウト
レイアウトはキーボードごとに異なるため、この質問では自分のキーボードに基づく標準を使用します。
キーボードには3つの行があり、一番上の行には左から右にキーが含まれています
QWERTYUIOP
2行目には文字が含まれています
ASDFGHJKL
最後の行には
ZXCVBNM
各文字は、隣から左に1単位水平です。この手段W
から離れて1であるQ
とE
離れてから1であるW
というように。
各行の先頭のキーには、次の位置があります。
Q : 0,0
A : 1/3,1
Z : 2/3,2
これは、行が垂直方向に1単位分離され、下の2行がその上の行から3分の1シフトされていることを意味します。
入力として単語を取り、その単語内の文字の平均位置に最も近い文字を出力する必要があります。ベクトルのセットの平均は
(average x value, average y value)
2つのキーが平均から等距離にある場合、「最も近い」キーとして出力できます。
これは コードゴルフ そのため、回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。
ソリューションの例
の平均を計算してみましょうAPL
。
各文字をベクトルに変換します
A -> (1/3,1)
P -> (9,0)
L -> (8 1/3,1)
これらを3つのベクトルに加算して取得し(17 2/3, 2)
ます。次に、各座標を3(単語の文字数)で割り、を取得し(5 8/9, 2/3)
ます。
最も近い文字が(5 8/9, 2/3)
あるJ
時に(6 1/3,1)
私たちの結果になるようJ
。
テストケース
APL -> J
TEXT -> R
PPCG -> J
QQQQ -> Q
ZZZZ -> Z
PPPP -> P
MMMM -> M
QQSS -> A or W