Zielsetzung
Ich habe ein schönes Bild, das ich an meine Wand hängen möchte. Und ich möchte, dass es dort auf spektakuläre Weise hängt, also habe ich es an nNägeln aufgehängt, wo nes eine positive ganze Zahl gibt.
Aber ich bin auch unentschlossen. Wenn ich es mir anders überlege, möchte ich nicht viel Mühe haben, das Bild herunterzunehmen. Wenn Sie einen der nNägel entfernen, sollte das Bild herunterfallen. Habe ich erwähnt, dass es in meinem Haus keine Reibung gibt?
Kannst du mir helfen?
Regeln
- Ihr Programm muss die Nummer
nvon stdin lesen und in stdout (oder den Entsprechungen Ihrer Sprache) drucken. - Die Ausgabe muss die Lösung gemäß der Ausgabespezifikation ohne andere nachfolgende oder führende Zeichen sein. Nachgestellte Leerzeichen und / oder Zeilenumbrüche sind jedoch akzeptabel.
- Sie müssen genau
nNägel verwenden. - Unter der Annahme einer reibungslosen Welt muss Ihre Lösung die folgenden Bedingungen erfüllen:
- Wenn Sie das Bild wie von Ihrer Lösung beschrieben aufhängen, darf es nicht herunterfallen.
- Wenn einer der Nägel entfernt wird, muss das Bild herunterfallen.
- Es gelten Standardlücken. Insbesondere dürfen Sie beispielsweise keine Anfragen an das Verifizierungsprogramm für Brute-Force-Lösungen stellen.
Beachten Sie, dass 4.2 bereits impliziert, dass alle nNägel beteiligt sein müssen.
Ausgabespezifikation
- Alle Nägel werden von links nach rechts mit der Position benannt, in der sie sich befinden, beginnend bei
1. - Es gibt zwei grundlegende Möglichkeiten, die Schnur um einen Nagel zu legen: im Uhrzeigersinn und gegen den Uhrzeigersinn. Wir bezeichnen einen Schritt im Uhrzeigersinn mit
>und einen Schritt gegen den Uhrzeigersinn mit<. - Jedes Mal, wenn die Schnur um einen Nagel gelegt wird, kommt sie oben auf den Nägeln heraus. Wenn Sie also die Nägel überspringen, läuft die Schnur über die Oberseite der Zwischennägel.
- Jede Lösung muss am Nagel beginnen
1und am Nagel endenn. - Die Ausgabe muss aus einer Folge von Schritten bestehen, wobei ein Schritt eine Kombination aus dem Namen des Nagels und der Richtung ist, in der die Schnur um ihn herum gelegt werden soll.
Beispielausgabe
Hier ist eine Beispielausgabe für n=5und n=3:
1>4<3<2>4>5< # n=5, incorrect solution
1>2<1<2>3<2<1>2>1<3> # n=3, correct solution
Und hier ist eine visuelle Darstellung der falschen Lösung für n=5(awsumz gimp Skillz)

Die richtige Lösung für n=1ist einfach 1>oder 1<. Für mehrere Nägel kann es verschiedene Lösungen geben. Sie müssen nur eine ausgeben, da dies Teil Ihrer Punktzahl ist.
Nachprüfung
Hier können Sie überprüfen, ob eine Lösung korrekt ist: www.airblader.de/verify.php .
Es wird eine GET-Anforderung verwendet, sodass Sie sie direkt aufrufen können, wenn Sie möchten. Wenn es sich beispielsweise fooum eine Datei handelt, die in jeder Zeile eine Lösung enthält, können Sie diese verwenden
cat foo | while read line; do echo `wget -qO- "www.airblader.de/verify.php?solution=$line" | grep "Passed" | wc -l`; done
Wenn Sie der Meinung sind, dass eine Lösung korrekt ist, der Prüfer sie jedoch als falsch markiert, lassen Sie es mich bitte wissen!
Bearbeiten: Und wenn Ihre Ausgabe so lang ist, dass eine GET-Anfrage sie nicht schneidet, lassen Sie es mich wissen und ich werde eine POST-Anforderungsversion erstellen. :) :)
Wertung
Das ist Code-Golf. Die Punktzahl ist die Anzahl der Bytes Ihres Quellcodes in der UTF-8-Codierung. Verwenden Sie beispielsweise dieses Tool . Für jede Einreichung gibt es jedoch einen potenziellen Bonus:
Führen Sie Ihr Programm für alle nim Bereich aus [1..20]und addieren Sie die Länge aller Ausgaben, um Ihre Ausgabewertung zu bestimmen . Subtrahieren Sie Ihre Ausgabewerte von 6291370, um die Anzahl der Bonuspunkte zu erhalten , die Sie von Ihrer Byteanzahl abziehen können, um Ihre Gesamtbewertung zu erhalten . Es gibt keine Strafe, wenn Ihre Ausgabewertung höher als diese Zahl ist.
Die Einreichung mit der niedrigsten Gesamtpunktzahl gewinnt. Im unwahrscheinlichen Fall eines Unentschieden sind die Unentschieden in dieser Reihenfolge: höhere Bonuspunkte, niedrigere Byteanzahl, früheres Einreichungsdatum.
Bitte geben Sie sowohl die einzelnen Teile (Anzahl der Bytes, Bonuspunkte) der Punktzahl als auch die endgültige Punktzahl an, z LOLCODE (44 - 5 = 39). B. " ".
1>im Bild gezeichnet wird). Und es gibt keinen Ort, an ndem keine Lösung möglich ist. Eine gültige Lösung für n=2ist 1>2<1<2>.