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 NCharakteren gibt es N-1Kringelknoten. 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 0und 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.3333glatt, 0.4444klobig und 0.2222zerbrochen.
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.6666und ein0.6667, sogar Dinge wie0.666637104. Wenn der genaue Wert ist1/3, ist jede Antwort0.3333gü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?