Eingang:
Zwei ganze Zahlen: eine negative, eine positive.
Ausgabe:
In der ersten Zeile die niedrigste bis höchste Ausgabe. In der zweiten Zeile haben wir die höchsten und niedrigsten Zahlen entfernt und alle einzelnen Zahlen mit einem Vorzeichen versehen. In der dritten Zeile haben wir die höchsten und niedrigsten Zahlen wieder entfernt und alle einzelnen Zahlen erneut mit einem Vorzeichen versehen. usw. (Das folgende Beispiel soll die Herausforderung verdeutlichen.)
Wichtig: Außerdem fügen wir Leerzeichen hinzu, damit die Zahlen in einer Spalte alle (rechts) ausgerichtet sind.
Die minimale Ausrichtung ist der Hauptteil dieser Herausforderung. Das bedeutet, dass Sie nicht einfach jede einzelne Zahl auf die gleiche Breite bringen können. Die Breite einer Spalte basiert auf der größten Zahlenbreite dieser bestimmten Spalte (und die Sequenz mit Vorzeichenwechsel soll den Zahlen eine gewisse Breite pro Spalte geben).
Beispielsweise:
Input: -3,6
Output:
-3,-2,-1, 0, 1, 2, 3, 4,5,6 // sequence from lowest to highest
2, 1, 0,-1,-2,-3,-4,-5 // -3 and 6 removed; then all signs changed
-1, 0, 1, 2, 3, 4 // 2 and -5 removed; then all signs changed again
0,-1,-2,-3 // -1 and 4 removed; then all signs changed again
1, 2 // 0 and -3 removed; then all signs changed again
// only two numbers left, so we're done
Wie Sie oben sehen können, werden Leerzeichen an den positiven Zahlen hinzugefügt, wenn sie sich eine Spalte mit negativen Zahlen teilen, um dies auszugleichen -
(dasselbe gilt für zweistellige Zahlen).
Herausforderungsregeln:
- Die Eingabe muss aus zwei ganzen Zahlen bestehen
- Sie können davon ausgehen, dass diese Ganzzahlen im Bereich
-99
-99
(einschließlich) liegen. - Die erste Ganzzahl ist negativ und die andere positiv.
- Sie können davon ausgehen, dass diese Ganzzahlen im Bereich
- Die Ausgabe kann in jedem vernünftigen Format erfolgen, sofern klar ist, dass Zeilen und richtig ausgerichtete Spalten vorhanden sind: ZB STDOUT; Rückgabe als String mit Zeilenumbrüchen; Rückkehr als Liste von Strings; usw. Ihr Anruf.
- Die Ausgabe muss außerdem ein Trennzeichen Ihrer Wahl enthalten (mit Ausnahme von Leerzeichen, Tabulatoren, Zeilenumbrüchen, Ziffern oder
-
): Dh,
; und;
und|
; undX
; usw. sind alle akzeptablen Begrenzer. - Die Ausgabezeilen dürfen kein führendes oder nachfolgendes Trennzeichen enthalten.
- Die Ausgabe kann EINE nachgestellte neue Zeile enthalten, und jede Zeile kann eine beliebige Anzahl nachgestellter Leerzeichen enthalten.
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methode mit den richtigen Parametern und vollständige Programme verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
Testfälle:
Input: -3,6
Output:
-3,-2,-1, 0, 1, 2, 3, 4,5,6
2, 1, 0,-1,-2,-3,-4,-5
-1, 0, 1, 2, 3, 4
0,-1,-2,-3
1, 2
Input: -1,1
Output:
-1,0,1
0
Input: -2,8
Output:
-2,-1, 0, 1, 2, 3, 4, 5, 6,7,8
1, 0,-1,-2,-3,-4,-5,-6,-7
0, 1, 2, 3, 4, 5, 6
-1,-2,-3,-4,-5
2, 3, 4
-3
Input: -15,8
Output:
-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6,7,8
14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7
-13,-12,-11,-10, -9, -8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6
12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5
-11,-10, -9, -8, -7, -6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3
-9, -8, -7, -6, -5, -4,-3,-2,-1, 0, 1, 2
8, 7, 6, 5, 4, 3, 2, 1, 0,-1
-7, -6, -5, -4, -3, -2,-1, 0
6, 5, 4, 3, 2, 1
-5, -4, -3, -2
4, 3
Input: -3,15
Output:
-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15
2, 1, 0,-1,-2,-3,-4,-5, -6,-7, -8, -9,-10,-11,-12,-13,-14
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
0,-1,-2,-3,-4,-5,-6,-7, -8,-9,-10,-11,-12
1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11
-2,-3,-4,-5,-6,-7,-8,-9,-10
3, 4, 5, 6, 7, 8, 9
-4,-5,-6,-7,-8
5, 6, 7
-6
Input: -12,12
Output:
-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12
11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11
-10, -9, -8,-7,-6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
9, 8, 7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9
-8, -7, -6,-5,-4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6, 7, 8
7, 6, 5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7
-6, -5, -4,-3,-2,-1, 0, 1, 2, 3, 4, 5, 6
5, 4, 3, 2, 1, 0,-1,-2,-3,-4,-5
-4, -3, -2,-1, 0, 1, 2, 3, 4
3, 2, 1, 0,-1,-2,-3
-2, -1, 0, 1, 2
1, 0, -1
0
-99
und der größtmögliche positive Eingang ist99
.Antworten:
Jelly ,
252420 BytesDies ist eine dyadische Verknüpfung, die ein Array von Zeilen zurückgibt.
Probieren Sie es online!
Wie es funktioniert
quelle
05AB1E , 59 Bytes
Ich bin wieder einmal durch den gleichen Fehler durchgeknallt, den ich vor Monaten
behoben habe, aber nie aufgedrängt habe ... Golfen sollte dennoch möglich sein.
Probieren Sie es online!
quelle
ŸÐ',ý,gÍ;µ¦¨(D',ý,¼
Es passt nicht ganz zu den Formatierungsspezifikationen, sehen Sie, ob Sie es verbessern können;)Ÿ[Ðg1‹#',ý,¦(¨
würde sonst reichen :)Java 8,
483480486† 467 Bytes† Bytes, die aufgrund einer Fehlerbehebung ausgelöst wurden.
Ok, das war VIEL mehr Zeit (und Bytes) , als ich dachte (in Java , die ist ..). Dies kann definitiv noch weiter verbessert werden, wahrscheinlich durch einen völlig anderen Ansatz, anstatt ein NxN-Grid-Array zu erstellen, um die Nullen auszufüllen und dann zu "streifen" (mit einem nervigen Randfall für den Testfall von
-1,1
sowie-12,12
). .Probieren Sie es online aus.
Erläuterung:
quelle
Javascript (ES6), 269 Bytes
Erklärt:
quelle
QBIC , 46 Bytes
Wie es funktioniert:
Glücklicherweise fügt QBasic beim Drucken einer Zahl automatisch den erforderlichen Abstand hinzu.
quelle
q
Standardwert bei 1, wenn ich ihn richtig lese ? Beginnen alle Werte in QBIC bei 1, oder fehlt hier etwas? Und wofür steht dasd
/ wod
? Oder istd
die aktuelle Nummer in der Schleife und die?
einfach notwendige Nummer im Code der for-Schleife abgegrenzt (anstatt?
die aktuelle Nummer zu sein, wie ich sie ursprünglich gelesen habe)?q
beginnt bei 1. Alle Kleinbuchstaben sind Zahlenvariablen und die Buchstabenq-z
werden mit initialisiert1-10
. Mehrere Befehle weisen Nummern automatisch in der Reihenfolge zu, in der sie im Code enthalten sind.d
ist in der Tat der Iterator in der inneren FOR-Schleife. Weitere Informationen finden Sie auch in der Vitrine - oder dieserPerl 6 , 146 Bytes
Versuch es
Erzeugt eine Folge von Strings
Erweitert:
quelle
PHP 7.1, 277 Bytes
Online-Dolmetscher
quelle
C # -Konsolenanwendung 196 Bytes
quelle
Javascript -
196185176 BytesIch bin mit einigen der neueren JS-Techniken nicht wirklich auf dem Laufenden, daher könnte man wahrscheinlich viel mehr Golf spielen.
Erstellt einfach eine gute, altmodische HTML-Tabelle, für die keine Breite für die Zellen definiert ist, sodass in der ersten Zeile standardmäßig der optimale Abstand für jeden Eintrag festgelegt wird. Es nutzt auch (ab) die "Funktion" von HTML, bei der keine schließenden Tags erforderlich sind, wenn zuerst ein neues öffnendes Tag hinzukommt.
quelle
Python 2 - 208 Bytes
Probieren Sie es online aus
Erstellt ein Array mit Auffüllwerten und verwendet es dann, um die erforderlichen formatierten Zeichenfolgen zu erstellen
Erläuterung:
quelle
,
und;
und|
sind alle akzeptable Trennzeichen. " Derzeit verwenden Sie ein Leerzeichen als Trennzeichen. Aber die Hauptschwierigkeit der Weite wurde in der Tat angegangen, also machst du das bisher großartig! Nur diese kleine Änderung, und dann sollte es getan werden. :)%l[i], range
erforderlich?)