Herausforderung:
Erstellen Sie eine Funktion oder ein Programm, das eine Eingabe N (eine Zahl von 0 bis 24) für die STUNDE annimmt.
Die Ausgabe sollte eine analoge Uhr aus den Sternchen zeichnen, die die Stunde N anzeigen.
🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛
Anmerkungen:
• Der Minutenzeiger muss länger als der Stundenzeiger sein (in Bezug auf die Anzahl der verwendeten Sternchen)
• Der Minutenzeiger muss aus mindestens 2 Sternchen bestehen.
• Mittag, 15 Uhr, 18 Uhr und 21 Uhr sind immer orthogonal. Ihre Ausgabe für Zwischenstunden sollte, wenn nach Grad geordnet, in der gleichen Reihenfolge wie die Stunden des Tages erfolgen. Was ich meine , ist mittags der Stundenzeiger ist 0 ºC und bei 03.00 der Stundenzeiger ist 90º so für die Ausgabe Fälle von 01.00 und 2Pm Folgendes muss wahr sein: 0pm_deg < 1pm_deg < 2pm_deg < 3pm_deg
. Abgesehen von dieser Regel kann der tatsächliche Gradbetrag beliebig sein. Dies hängt natürlich von der Schriftart und anderen nativen Faktoren ab.
• Die Verbindungsstelle zwischen Stunden- und Minutenzeiger ist ein kreisförmiger / ovaler Unicode. o, O, •, 0, etc.
Beispiel für Eingabe / Ausgabe (kann je nach Zeichnungsstil variieren)
N = 3;
*
*
*
O * *
N = 4;
*
*
*
O
*
*
N = 5;
*
*
*
0
*
*
N = 6;
*
*
o
*
N = 7;
*
*
*
•
*
*
N = 0,12,24;
*
*
*
o
Beispiel für die Differenzierung von Ausgaben:
N = 4 VS N = 5 VS N = 6
* * *
* * *
O O O
* * *
Das ist Code-Golf , also gewinnt das Programm mit dem kürzesten bytecount!
3
beispielsweise eine andere Größe haben als der Minutenzeiger7
?23:00
ist11:00
. In Gedanken habe ich versucht, wieder zur 12. Hand zurückzukehrenAntworten:
Javascript (ES6),
1057665 Bytes-29 Bytes:
-11 Bytes:
y==(N%12).toString(16)?'*':' '
->'0x'+y^N%12?' ':'*'
Original mit längeren Zeigern: (
10594 Bytes)quelle
CSS / HTML (JavaScript), 62 + 106 =
180168 ByteBearbeiten: 9 Bytes dank @nderscore gespeichert.
quelle
<body onload=f(prompt())>
<input oninput=h.style.transform=`rotate(${this.value*30}deg)`>
Python 2 ,
148140135 Bytes-8 durch Löschen von Leerzeichen und nicht mehr benötigten Zeilenumbrüchen.
-5 durch Ändern
(' ','*')
auf' *'
Probieren Sie es online!
quelle
C (gcc) 144 Bytes
Probieren Sie es online!
quelle
SmileBASIC,
908874 BytesBeispielausgabe:
quelle
Python 3 ,
86-85Bytes-1 Byte, besseres Zifferblatt (Kredit DuctrTape, wie in meiner Gelee-Antwort verwendet)
Probieren Sie es online!
quelle
Jelly ,
35 3433 BytesProbieren Sie es online! (
tI©
!) oder alle anzeigen (0 - 24) .Wie?
Beachten Sie, dass
“ tI©’Œ?Ḋ
(Permutation am Index, aus der Warteschlange entfernt) eine Byte-Speicherung über“9ȧỤ_ÑḶ’b⁴
(Basis 16 von) ist, die eine Byte-Speicherung über“¦þxṙ<ȥ’ḃ13
(bijektive Basis 13 von) ist.†
In Bezug auf den Pop - wir haben ein zusätzliches Leerzeichen in der Zeichenkette, in dem der Stern für 0, 12, 24 angezeigt wird, um die Mod-12-Indizierung der Indexliste zu ermöglichen, wobei das letzte Zeichen von dort wegspringt, ist bytegünstiger als Vorab die Verkettung durchführen“**o”
und eines dieser Sternchen überschreiben.‡
In Bezug auf die Rotation ist dies eine Byte-Ersparnis gegenüber der Erstellung eines Strings mit dem "** o" in der Mitte (entweder vor oder nach der Platzierung des Sternchens).quelle
Haskell, 148 Bytes
Funktion c ist diejenige, die die gegebene Aufgabe löst
quelle
Bash + Unix-Dienstprogramme, 57 Bytes
(Nach dem letzten Backslash ist ein Leerzeichen.)
Probieren Sie es online!
Keine sehr schöne Uhr, aber sie erfüllt alle Anforderungen.
quelle
PHP, 71 Bytes
1 Sternchen-Stundenzeiger, 2 Sternchen-Minutenzeiger.
Nimmt Eingaben vom Kommandozeilenargument entgegen; renn mit
-nr
.quelle
05AB1E , 41 Bytes
Dies ist für TIO zu langsam.
Versuchen Sie dies, um ähnlichen Code für TIO zu erhalten
Ich bin mir ziemlich sicher, dass das sowohl Golfspielen als auch Beschleunigen ist.
Erklärung kommt später.
quelle
Logikcode 634 Bytes
Konnte nicht herausfinden, wie man eingibt, so gibt es ein var a = ... für die Eingabe am oberen Rand des tio-Links
Habe das Golfen aufgegeben. Könnte es allerdings kürzer machen, wenn die Uhr schrecklich aussieht.
Probieren Sie es online
quelle