Die Herausforderung besteht darin, ein ASCII-Lineal für die Zeichenanzahl im folgenden Format zu generieren:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
Die Länge des Lineals sollte auf ein Vielfaches von 10 skalierbar sein.
Regeln:
- Das Lineal muss horizontal sein.
- Nehmen wir zur Vereinfachung an, dass das Lineal bis zur 1000-Marke arbeiten muss, alle Zahlen linksbündig, ein Leerzeichen nach der endgültigen Zahl .
- Wenn Sie nach einem Lineal mit der Länge Null fragen, sollte NaR gedruckt werden
- Negative Zahlen sollten ein umgekehrtes Lineal (-90, -80, -70, ...) mit rechtsbündigen Zahlen im exakt gleichen Format wie oben drucken
Und nur auf die Konsole zu drucken ist in Ordnung
Fertig, fertig, Golf!
Antworten:
Python - 227
232Unterstützt die gesamte Spezifikation
edit: verbesserter Generatorausdruck.
Die Unterstützung von rechtsbündigen negativen Zahlen fügt eine überraschende Menge an Code hinzu.
Beispielausgaben:
-30 30
-30 -30
100 150
-1000 -950
quelle
Ich werde die dynamischen Sprachen heute nicht schlagen, aber trotzdem ...
Haskell, 341
Ich habe mir erlaubt, die tatsächlichen ASCII-Zeichen gegen besser aussehende Zeichen für das Zeichnen von Unicode-Boxen auszutauschen.
quelle
Python 2.7,
342 266260 ZeichenGibt ein
Tupel jederZeilenzeichenfolge zurück, das Sie dann drucken oder in einer Datei speichern können (ich bevorzuge letzteres für Längen von mehr als 70, da die Konsole sie nur mit dem Umbruch durcheinander bringt).Angenommen
y
, es handelt sich umeine Zeichenfolge (raw_input () n python oder sys.argv [1], wenn Sie über cmd aufrufen möchten),eine Ganzzahl (z. B. mit input () in 2.x oder int (input ()) in 3.x. )Ich habe dies zu einer Funktion gemacht, um flexibler zu sein
Bearbeiten: auf 266 Zeichen reduziert. gibt nicht mehr ein Tupel zurück, sondern eine Zeichenfolge. Nimmt jetzt eine Ganzzahl anstelle einer Zeichenfolge als Argument
edit2: reduziert auf 260 Zeichen, einzeilige Funktion
Hinweis: Behandelt negative Zahlen, rechtfertigt sie aber nicht richtig (ich glaube nicht, dass die Rechtfertigung sowieso zu wichtig ist
quelle
PowerShell ,
256253233225222 ByteProbieren Sie es online aus!
Weniger Golf:
quelle
Python,
291241 ZeichenEin ziemlich einfacher Ansatz. Ich bin sicher, dass es ziemlich viel verbessert werden kann.
Ich habe versucht, den Richtlinien in den Kommentaren zu folgen, aber ich unterstütze keine negativen Zahlen (es war ein Witz, hoffe ich).
Dies ist ein Programm, das das Lineal auf Standardausgabe druckt. Wenn Ihr Bildschirm breit genug ist, sollte er ziemlich lange Lineale unterstützen.
quelle
C ++, 392
Dies wird über die Windows-Konsole programmiert, daher habe ich nur eine maximale Linealgröße von 70 gewählt. Es stürzt nur für etwas Größeres ab. Negative Zahlen (bis zu -70) und 0 werden korrekt behandelt.
quelle
Python - 208
(unterstützt keine rechtsbündigen negativen Zahlen)
Ich denke, mein Lieblingstrick war es, Zeichenfolgen zu generieren, die viel länger als nötig sind, und sie dann abzuschneiden, zum Beispiel:
Ich wünschte nur, es gäbe eine präzisere Option zur Formatierung von Zeichenfolgen für die Linksausrichtung (es sei denn, es gibt eine, von der ich einfach nichts weiß).
quelle
Perl 5,14,
198224 ZeichenKann wahrscheinlich noch viel weiter verkürzt werden, aber hier ist ein
ersterzweiter Versuch (mit Zeilenumbrüchen zur besseren Lesbarkeit):BEARBEITEN: Bearbeitet, um mit "NaR" zu sterben, wenn die Eingabe erfolgt,
0
und um den negativen Bereich zu unterstützen.EDIT2: Ich hatte noch keine Gelegenheit, mehr daran zu arbeiten, und ich habe gerade erst bemerkt, dass die Regel für rechtsgerichtete negative Zahlen ausgerichtet ist, die mein Code nicht unterstützt. Daher denke ich, dass eine andere Lösung als Antwort markiert werden sollte, wenn die Frist wurde erreicht.
quelle