Chunky vs. Smooth Stringsに基づいています。
/\_/\/\__/\/\/\/\_/\_/\
あなたが本当に退屈しているとき、波線はキーボードで作るのが楽しいです。しかし、すべての波線が平等に作成されるわけではありません。いくつかの波線はのよう\___/
に滑らかで、いくつかはのようにずんぐりしてい/\/\/\/\
ます。他のものはまったく壊れています////_\\\
N
キャラクターのあらゆる波線の中に、波線N-1
ジャンクションがあります。各波型ジャンクションは、次の3つのタイプのいずれかに分類されます。
スムーズ(角度>「90度」):
\_ __ _/
分厚い(角度=「90度」)
/\ \/
壊れた(接続しないもの)
// \\ /_ _\
レッツは、定義滑らかにし、滑らかで接合の割合であることをchunkinessと壊れた同様に定義します。各値の範囲は0
〜1
です。波線の滑らかさ、チャンクネス、および破損の合計は、常に1に等しくなります。
たとえば、波線に/\/\\_//\_
は3つの滑らかなジャンクション、4つの分厚いジャンクション、2つの壊れたジャンクションがあります。このように0.3333
滑らかで、0.4444
分厚い、0.2222
壊れています。
空の文字列と1文字のみの文字列には未定義の値があり、すべての入力は少なくとも2文字の長さになります。
チャレンジ
任意の長さの波線を取り込んで、その滑らかさ、チャンクネス、および破損の値のいずれか2つを出力するプログラムを作成します。
- STDIN、コマンドライン、または文字列引数を介した入力を使用して、プログラムまたは関数を作成できます。
- 入力は少なくとも長さ2以上で
/\_
、オプションの末尾改行を含む文字のみで構成されていると想定できます。 - 2つの浮動小数点数を、小数点以下4桁以上で丸めまたは切り捨てて印刷(または関数の場合は戻り)します。真の値である場合は
2/3
、許容値は、いずれかの間の値が含ま0.6666
と0.6667
、のようにも物事を0.666637104
。正確な値がの場合、1/3
含む回答0.3333
はすべて有効です。後続のゼロは省略できますが、値が1より小さい場合は、先行のゼロを省略できます。 - 必要に応じて、3つの値の任意のペアを出力します。必ず、2つと順序を指定してください。
バイト単位の最短コードが優先されます。
例
/\/\\/\//\\
→滑らかさ0
、分厚さ0.7
、破損0.3
_/\\_/\\/__/\\\//_
→滑らかさ0.29411764705
、分厚さ0.29411764705
、破損0.41176470588
//\\__/_\/
→滑らかさ0.3333333
、分厚さ0.2222222
、破損0.4444444
おまけの質問:なめらか、チャンキー、壊れた波線のどちらが好きですか?