Basierend auf Chunky vs. Smooth Strings .
Schnörkel /\_/\/\__/\/\/\/\_/\_/\
machen auf einer Tastatur Spaß, wenn Sie sich wirklich langweilen. Aber nicht alle Schnörkel sind gleich. Einige Kringel sind glatt \___/
und andere klobig /\/\/\/\
. Andere sind einfach total kaputt, wie////_\\\
In jedem Kringel von N
Charakteren gibt es N-1
Kringelknoten. Jede Kringelverbindung wird in einen von drei Typen eingeteilt:
Glatt (Winkel> "90 Grad"):
\_ __ _/
Chunky (Winkel = "90 Grad")
/\ \/
Kaputt (alles was nicht verbindet)
// \\ /_ _\
Nehmen wir definieren die Glätte der Anteil der Übergänge zu sein , die glatt sind, mit chunkiness und Gebrochensein in ähnlicher Weise definiert. Jeder Wert liegt zwischen 0
und 1
. Die Summe aus Glätte, Grobheit und Zerbrechlichkeit eines Kringels ist immer gleich 1.
Zum Beispiel hat das Squiggle /\/\\_//\_
3 glatte Übergänge, 4 klobige Übergänge und 2 unterbrochene Übergänge. Es ist somit 0.3333
glatt, 0.4444
klobig und 0.2222
zerbrochen.
Leere Zeichenfolgen und Zeichenfolgen mit nur einem Zeichen haben undefinierte Werte. Alle Eingaben sind mindestens 2 Zeichen lang.
Herausforderung
Schreiben Sie ein Programm, das ein Kringel von beliebiger Länge annimmt und zwei beliebige Werte für Glätte, Klumpigkeit und Zerbrechlichkeit ausgibt.
- Sie können ein Programm oder eine Funktion mit Eingabe über STDIN, Befehlszeile oder als Zeichenfolgenargument schreiben.
- Sie können davon ausgehen, dass die Eingabe mindestens eine Länge> = 2 hat und nur aus den Zeichen
/\_
mit einer optionalen nachgestellten Zeile besteht. - Geben Sie die beiden Gleitkommazahlen mit einer Genauigkeit von mindestens 4 Dezimalstellen (gerundet oder abgeschnitten) aus (oder geben Sie sie zurück, wenn Sie eine Funktion ausführen). Wenn der wahre Wert ist
2/3
, schließen akzeptable Werte jeden Wert zwischen0.6666
und ein0.6667
, sogar Dinge wie0.666637104
. Wenn der genaue Wert ist1/3
, ist jede Antwort0.3333
gültig, die enthält. Sie können nachfolgende Nullen oder die führende Null weglassen, wenn der Wert kleiner als Eins ist. - Geben Sie ein beliebiges Paar der drei Werte nach Ihren Wünschen aus. Geben Sie dabei nur die beiden Werte in welcher Reihenfolge an.
Der kürzeste Code in Bytes gewinnt.
Beispiele
/\/\\/\//\\
→ Glätte 0
, Grobheit 0.7
, Zerbrechlichkeit0.3
_/\\_/\\/__/\\\//_
→ Glätte 0.29411764705
, Grobheit 0.29411764705
, Zerbrechlichkeit0.41176470588
//\\__/_\/
→ Glätte 0.3333333
, Grobheit 0.2222222
, Zerbrechlichkeit0.4444444
Bonusfrage: Welche bevorzugen Sie, glatte oder klobige oder gebrochene Kringel?