Die Hanteln in meinem Fitnessstudio sehen so aus:
=========[]-----------------------[]=========
Sie können Teller in fünf verschiedenen Größen, 2,5 Pfund, fünf Pfund, zehn Pfund, 25 Pfund und 45 Pfund halten:
.
. ! |
. ! | | |
| | | | |
' ! | | |
' ! |
'
Aus Sicherheitsgründen fügen wir auch einen Clip ]
oder [
, falls vorhanden , einen an der Außenseite aller unserer Platten hinzu. Die Bar selbst wiegt 45 Pfund. Wir legen immer die schwersten Platten, die der Mitte am nächsten sind, ohne Lücken zwischen den Platten, und legen identische Platten auf beiden Seiten. Wir verwenden auch immer die geringstmögliche Anzahl von Tellern, z. B. verwenden wir niemals zwei Fünf-Pfund-Teller auf einer Seite anstelle eines einzelnen Zehn-Pfund-Tellers. Wenn ich also 215 Pfund heben möchte, sieht meine Leiste so aus:
. .
.!| |!.
!||| |||!
====]||||[]-----------------------[]||||[====
!||| |||!
'!| |!'
' '
Ihr Code, eine Funktion oder ein vollständiges Programm, muss eine Ganzzahl von 45 bis 575, immer ein Vielfaches von 5, annehmen und den Balken ausgeben, der sich zu dieser Gewichtung addiert. Beispielsweise:
Eingang: 45
Ausgabe (beachten Sie, dass sich auf einer leeren Leiste keine Clips befinden):
=========[]-----------------------[]=========
Eingang: 100
Ausgabe:
! !
.| |.
======]||[]-----------------------[]||[======
'| |'
! !
Eingang: 575
Ausgabe:
..... .....
.!||||| |||||!.
!||||||| |||||||!
]||||||||[]-----------------------[]||||||||[
!||||||| |||||||!
'!||||| |||||!'
''''' '''''
Sie können Leerzeichen in jeder Zeile setzen oder auch nicht, aber Ihre Ausgabe darf keine führenden oder nachgestellten Leerzeilen enthalten (die Ausgabe für 45 sollte eine Zeile sein, für 50 sollten drei Zeilen sein, für 65 sollten fünf Zeilen sein usw.).
Das ist Code Golf, der kürzeste Code gewinnt!
print
?Antworten:
Pyth, 126 Bytes
Der Quellcode enthält nicht druckbare Zeichen, hier also als XXD-Dump:
Dieser Code ist extrem langsam und kann nicht mehr verwendet werden. Sie können es um das 1000-fache beschleunigen, indem Sie einen
.{
(set
) -Aufruf dazwischen einfügen, während der Code funktional äquivalent bleibt. Hier ist eine kopier- und einfügefreundliche Version des resultierenden Codes:quelle
Python 2, 295 Bytes
Baut die Leiste vertikal auf, dreht sie und druckt nicht leere Zeilen.
quelle
-v-1
ist ein Hauptkandidat für die bitweise Negation;~v
.Kohle , 65 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Drucken Sie 12
-
s, die[]
und 9=
s. Dies umfasst die Hälfte der Bar. Der Cursor steht am Anfang des=
s.Subtrahieren Sie 45 von der Eingabe, um das Gewicht des Balkens zu berücksichtigen.
Filtern Sie eine Liste der möglichen Gewichtungen von Gewichtungspaaren für diejenigen, die nicht größer als die Eingabe sind, und wiederholen Sie dies, solange die Liste nicht leer ist.
Teilen Sie die Zeichenfolge
|||.,|.,|!,||.,||!
durch Kommas, wählen Sie das Stück mit dem größtmöglichen Gewicht aus und drucken Sie es sowohl nach oben als auch nach unten. (Alternativ kann es auch einfach nach oben gedruckt und in die¬
Richtung am Ende reflektiert werden. Einige Variationen haben dieselbe Länge.)Clip drucken (wird ggf. mit dem nächsten Gewicht überschrieben).
Subtrahieren Sie das Gewicht von der Eingabe.
Überlege, um die Hantel zu vervollständigen.
quelle