Bei zwei willkürlichen Zahlen A, B. Drucken Sie Nummer B als digitales LED-Muster, wobei A die Skala ist.
Eingang:
1 2320451640799518
Ausgabe:
_ _ _ _ _ _ _ _ _ _ _ _
_| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_|
|_ _||_ |_| | _| ||_| ||_| | | | _| ||_|
Eingang:
2 23
Ausgabe:
__ __
| |
__| __|
| |
|__ __|
Regeln:
Verwenden Sie STDIN / STDOUT für die Ein- / Ausgabe
Code mit den meisten Up-Votes gewinnt. Im Falle von Unentschieden wird der kürzeste Code akzeptiert
Die am häufigsten gewählte Antwort wird am 01.02.2014 angenommen (Hat die Antwort mit den meisten 12 Stimmen angenommen)
ascii-art
popularity-contest
War ich
quelle
quelle
9
in meiner Antwort verwendet habe , da es mir besser gefällt :-)Antworten:
Commodore 64 BASIC
PETSCII Kunstregeln :)
Ausgabe:
quelle
Python 3,
286 282280Ja, ich habe diesen Golf gespielt. Schöne Herausforderung!
Außerdem gibt es hier eine Python 2-Version mit nur 273 Bytes!
Dieses Update wird nicht mehr mit weiteren Originalquellen aktualisiert. Dies wurde erstellt, als die ursprüngliche Quelle 282 Byte betrug (Python 3-Version).
Dies kann ein Betrug sein, also füge ich ihn separat hinzu. Lassen Sie mich wissen, ob dies als gültig angesehen wird oder nicht.
quelle
Haskell (389 Zeichen)
Die Lösung verwendet 7 Arrays, eines für jedes Segment des Arrays, wobei die Namen aus diesem Bild verwendet werden:
. Der Wert
a !! 4
wird das Zeichen sein, das an dieser Stelle für die Zahl 4 angezeigt werden soll.Die Werte werden gegebenenfalls mit der Skala multipliziert (unter Verwendung von
r
undrp
für die Replikation) und schließlich ausgedruckt.Der Code
Anwendungsbeispiel
quelle
C
249226 ZeichenGolf Lösung in C:
Mit zusätzlichen Leerzeichen:
Anmerkungen:
Ich werde erklären, wie es funktioniert, falls es jemanden interessiert.
quelle
#include <stdio.h>
(da es ohne C kompiliert wird.) Sie können auch ein int einfügenmain()
, z. B.main(x)
1 Byte aussparen - obwohl es nicht gültig ist unterschreiben undscanf
hineinsteckenfor
: noch einefor(scanf("%d %98s", &s, &i); …)
rasieren. - Schau mal hier .#include
, die bewegtscanf
innerhalb derfor
, entfernt , um die unnötige&
in&i
, und setzen Sie dieint
Variablen in globalen Bereich der statischen 0 Initialisierung zu nutzen. Der Code sollte jetzt noch legal sein C89, aber ich habe nicht gründlich geprüft. Ich glaube , setzt manint
inmain
nicht legal ist, so dass ich diese weggelassen.int
für globale Variablen weglassen . Auch%98s
sein kann%s
(für längere Strings Sie sowieso nicht, tut es eine Rolle , in welcher Weise?)Ruby 2.0
Schnelle und (nicht so) naive Ruby-Implementierung.
Schnelle Erklärung:
Ich deklariere zuerst die Zeichenfolgen, die Ein-und Aus-Ziffern für horizontale und vertikale Balken darstellen.
Dann lese ich die Skala und die Ziffern.
Ich deklariere dann ein Array mit der erforderlichen Größe, um genügend Zeilen für den angegebenen Maßstab zu speichern. Die seltsame Zeichenfolge ist eigentlich eine Zuordnung von 7-Bit-Werten, die angeben, welche LEDs für jede Ziffer eingeschaltet werden sollen.
Als nächstes fülle ich für jede Ziffer das Ausgabearray von oben nach unten unter Berücksichtigung der horizontalen Skalierung.
Die letzte Schleife besteht darin, die Zeilen zu füllen, die nur vertikale Balken enthalten. Diese können nur aus den mittleren und unteren Zeilen generiert werden, indem horizontale Balken entfernt werden.
Schließlich drucke ich das Ausgabearray!
quelle
Python 2.6 ohne Importe. Ich würde sagen, dass die Attraktivität dieser Lösung die Verwendung von Vorlagen ist. Leider glaube ich, dass ich es deshalb so schwer hatte, es zu verdichten.
Und ein bisschen kürzer (308 Zeichen):
quelle
(Bearbeiten: Diese Lösung ist jetzt ungültig, da sich die Semantik der
銻
Anweisung geändert hat. Ich habe nicht bemerkt, dass ich die Anweisung bereits verwendet habe, als ich sie geändert habe. Sie können dieses Programm jedoch korrigieren, indem Sie es einfach in ändern die neuere Anweisung壹
.)Sclipting - 85 Zeichen①
Eingang:
Ausgabe:
②
Eingang:
Ausgabe:
quelle
銻
zu ändern壹
, aber das würde diesen Eintrag zum Schummeln bringen, weil er壹
erfunden wurde, nachdem diese Herausforderung veröffentlicht wurde.C # (
480443 Zeichen)Erweiterte Version:
Meine Idee war es, die Aufgabe in 5 horizontale Linien aufzuteilen, die wiederum in einen linken, rechten und mittleren Teil für jeden Charakter aufgeteilt sind.
quelle
;
(480); du kannst schreibenAction<z,z,z,int>q=(l,m,r,n)=>{...};
(470); Sie können den ersten Parameter vonh
a machenchar
und das""+
Innere tunh
(467); und schließlich können Sie deklarieren und wiederverwendenz d="134579",b="1237"
(465). Das ist das kleinste, was ich bisher schaffen konnteIch denke, es gibt sehr kurze Lösungen, aber da dies kein Code-Golf ist, bin ich ziemlich zufrieden!
Der PHP - Skript nimmt zwei Zahlen
a
,b
von STDIN und Echob
in LED - Format,a
Größe.BEARBEITEN: Im vorherigen Ausgabebeispiel habe ich fälschlicherweise angenommen, dass der Abstand zwischen den Ziffern so groß sein sollte wie die
a
Größe. Dies wurde mit der Erklärung des OP behoben, dass kein Platz benötigt wird.quelle
C #,
435359473 BytesEDITS:
Hier ist der Golf-Code (mit zusätzlichen Zeilenumbrüchen und Leerzeichen):
quelle
using System;using S=System.String;class P{static void Main(){Action<S[]>D=n=>{var r=int.Parse(n[0]);Func<int,int,bool>F=(i,c)=>("ϭͱͼΟŅŭϻ"[i]&1<<c-48)>0;S s="",v="|",w=" ",x=new S('_',r),y=new S(' ',r);foreach(var c in n[1])s+=w+(F(0,c)?x:y)+w+w;for(int j=1;j<6;j+=3)for(int i=r;i-->0;){s+="\n";foreach(var c in n[1])s+=(F(j,c)?v:w)+(i<1&&F(j+1,c)?x:y)+(F(j+2,c)?v:w)+w;}Console.Write(s);};D(Console.ReadLine().Split(' '));}}
System
C (
561492 Bytes)Autor ist frmar. Er hat mir letzte Woche seine Antwort geschickt (er hat seinen Account noch nicht erstellt).
492 Bytes, aber etwas verschleierter:
Vorherige Version mit 561 Bytes:
Originalversion von frmar (623 Bytes):
Zusammenstellung:
Beispiele mit Standardanzahl,
0123456789
aber unterschiedlichen Größen:Andere Beispiele:
Größere Größen:
quelle
Perl + FIGlet + BRA * : 54 Zeichen
Ich dachte, dies wäre mit FIGlet recht einfach , aber es gab anscheinend keine geeigneten Schriftarten für diesen Zweck. Also habe ich welche gemacht :-)
So sieht es am Terminal aus:
* BRA: offensichtlicher Regelmissbrauch
quelle
PERL,
261 244 187166 ZeichenEin bisschen bitweise Kodierungsphilosophie rulez :-)
Code mit Leerzeichen hinzugefügt:
Perl muss aufgerufen werden mit
-n
:Anmerkungen:
Gl+%<UWm7=
:-) Ein Zeichen entspricht einer Ziffer, kodiert sind 3 Stellen von 3 aufeinanderfolgenden Zeichen in der" _ _|_| |_ |"
Zeichenfolge.c
, die auch das vertikale Zoomen für die zweite und dritte Zeile ausführt.c
.Mein
sed
Programm kann nicht zoomen, sieht aber viel besser aus, oder? :-)Ziemlich genau die Idee, die mein PERL-Skript verwendet, aber in PERL ist es viel hässlicher. Beachten Sie, dass ich für mein sed-Programm lieber
9
einen Unterstrich in der letzten Zeile verwendet habe, der umgekehrt aussieht 6.quelle
C #,
386382364 Zeichen / 374 Byte (UTF-8) und (viel?) Raum für Verbesserungen ...BEARBEITEN Mist ... Ich habe den Teil "Skala" verpasst
Ich werde es noch einmal versuchen, wenn ich dazu komme ..
quelle
J - 147
95ZeichenErforderliche Skalierung hinzugefügt:
Kommentierte Version:
Beispiel:
quelle
Ruby, 126 ASCII-Zeichen
Jede Ziffer wird somit als Bitmap in Dritteln codiert, wobei jedes Drittel durch eine Oktalziffer dargestellt wird.
Da für alle Ziffern entweder das 64-Bit oder das 32-Bit gesetzt ist, liegt der Bereich zwischen 044 und 177 Oktal. Leider ist 177 das nicht druckbare DEL-Zeichen, daher enthält die magische Zeichenfolge die Zahlen 2 unter dem erforderlichen Bitmap-Code, und wir müssen in der Funktion wieder 2 hinzufügen.
Ungolfed im Testprogramm
Ausgabe
quelle
Perl 6,
284241237Bisherige Lösungen:
quelle