バックグラウンド
数ヶ月前、あなたの人生の冒険はちょうど始まりました。さて、この正確な瞬間に(ええ、今)、数ヶ月の苦労と努力の後、あなたと友人のグループは世界の頂点に立っています。はい、あなたは正しいです、あなたはサガルマータの頂上にいます。
しかし、物事はあなたが望んでいるほどうまくいきません。濃い霧があなたを取り囲み、信じられないほど見栄えの悪い嵐ができるだけ早く来ています。途中でロープを固定せず、足跡が雪に覆われました。(少なくとも今日は)生き残りたい場合は、できるだけ早くそこから抜け出す必要がありますが、まず、山のどの面が下りるべきかを知る方法を見つけなければなりません。
幸いなことに、旅行前に変更した衛星電話を持ち込んで、プログラムを実行できるようにしました。
チャレンジ
ASCIIの昔ながらの判読できない世界の頂点で山の地図を携帯電話にダウンロードすることができました。あなたの仕事は、あなたが生き残る可能性を高めることができるように、山のどの面が最も簡単な降下を示すかを決定することです。そうするためには、どれが最も簡単な方法であるかを伝えるプログラムを携帯電話でコーディングするという素晴らしいアイデアを持っています。(免責事項:これらの活動は専門家によって行われています。このナレーション中にプログラマは負傷していません。自宅でこれを試さないでください。)
マップは文字のみで構成されている/と\(プラススペースや改行)。どのマップでも、山の頂上は常に
/\
\/
そして、山頂の両側(1,2,3または4)からは、常に山を下る「可能な」方法を見つけるでしょう。
1 /\ 2
3 \/ 4
ルートは常に次の方法で表示されます。
\
Steep-> / /
/ / <-Flat
/ \
Flat-> \ \
/ \ <-Steep
/\
\/
ここで、各新しいキャラクターは、その前身の左/右のいずれかの場所です。各文字の意味は次のとおりです。
- スラッシュ/バックラッシュが山頂側に平行な場合->「急な」部分としてカウントされます。
- スラッシュ/バックスラッシュが頂上に垂直の場合->「フラット」パーツとしてカウントされます。
*詳細については、上の図を参照してください。
注:側面の長さは異なる場合があり、頂上を構成する文字も側面の一部としてカウントされます。引き分けの場合は、それらのいずれかを選択できます。
標準の抜け穴は許可されていません。
入力
山の地図を表す文字列または同じ情報を含むプレーンテキストファイル。
どちらか
C:\....\file.txt
または
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
文字列は有効な入力です。
出力
出力として、あなたは、プレーンテキストまたは標準出力によってファイルのいずれかで生成しなければならない最小の平均勾配を有する側のASCIIプロファイル表現使用して_平坦部および/急部品の平均勾配とともに側を(number of "/")/(total chars)。
上記のマップの出力例:
/
___/
/
AS:0.5
プロファイルと平均の急峻さがある限り、形式は重要ではありません。
得点
何?あなたとあなたの友人の命を救い、世界のトップでプログラミングを行った最初のプログラマーになるよりも良い報酬が欲しいですか?さて...これはコードゴルフですので、バイト単位の最短プログラムが勝ちです。
テストケース
入力:
\
/ /
/ /
/ \
\ \
/ \
/\
\/
\ /
\ \
\ \
\ \
/ /
出力:
/
___/
/
AS=0.5
入力:
/
\ /
/ /
\ /
\ /
/ /
/\
\/
\ /
\ \
\ \
\ \
/ /
/
/
出力:
______/
AS=0.143 (1/7)
入力:
/ \
\ \
/ /
/ \
/\
\/
\ /
\ /
\ /
/ \
出力:
/
/
/
_/
AS=0.8