Biorąc pod uwagę dwie dowolne liczby A, B. Wydrukuj numer B jako cyfrowy wzór LED, gdzie A oznacza skalę.
wkład:
1 2320451640799518
wyjście:
_ _ _ _ _ _ _ _ _ _ _ _
_| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_|
|_ _||_ |_| | _| ||_| ||_| | | | _| ||_|
wkład:
2 23
wyjście:
__ __
| |
__| __|
| |
|__ __|
Zasady:
Użyj STDIN / STDOUT dla wejścia / wyjścia
Kod z największą liczbą głosów wygranych. W przypadku remisu zostanie zaakceptowany najkrótszy kod
Najczęściej głosowana odpowiedź zostanie zaakceptowana 01.02.2014 (Zaakceptowano tę odpowiedź, otrzymując najwyższe 12 głosów)
ascii-art
popularity-contest
Czy byłem
źródło
źródło
9
w mojej odpowiedzi , ponieważ bardziej mi się podoba :-)Odpowiedzi:
Commodore 64 BASIC
Zasady sztuki PETSCII :)
Wydajność:
źródło
Python 3,
286 282280Tak, grałem w golfa. Niezłe wyzwanie!
Ponadto, oto wersja Python 2 ważąca zaledwie 273 bajty!
Nie aktualizuję już tego z dalszym oryginalnym źródłem gry w golfa. Zostało to utworzone, gdy pierwotne źródło miało 282 bajty (wersja Python 3).
To może być oszustwo, więc dodaję to osobno. Daj mi znać, czy jest to uważane za ważne, czy nie.
źródło
Haskell (389 znaków)
Rozwiązanie wykorzystuje 7 tablic, po jednej dla każdego segmentu tablicy, używając nazw z tego obrazu:
. Wartością
a !! 4
będzie znak, który powinien być wyświetlany w tej pozycji dla liczby 4.W razie potrzeby wartości są mnożone przez skalę (przy użyciu
r
irp
do replikacji), a na końcu drukowane.Kod
Przykładowe użycie
źródło
C,
249226 znakówGra w golfa w C:
Z dodaną białą spacją:
Uwagi:
Przedstawię wyjaśnienie, jak to działa, jeśli kogokolwiek to obchodzi.
źródło
#include <stdio.h>
(ponieważ będzie się kompilować bez niego.) Możesz także wstawić jedną wartość intmain()
, np.main(x)
Zgolić 1 bajt - chociaż to nie jest poprawne podpis i włóż doscanf
środkafor
:for(scanf("%d %98s", &s, &i); …)
golenie jeszcze jednego. - Spójrz tutaj .#include
, przeniósłscanf
się wewnątrzfor
, usunięciu niepotrzebnego&
in&i
, i umieścićint
zmiennych w zasięgu globalnym wykorzystać statyczny 0 inicjalizacji. Kod powinien być teraz zgodny z C89, ale nie sprawdziłem go dokładnie. Uważam, że włożenie jednegoint
z nichmain
jest niezgodne z prawem, więc to pominąłem.int
zmienne globalne. Również%98s
może być%s
(dla dłuższych ciągów nie uda tak, to ma znaczenie w jaki sposób?)Ruby 2.0
Szybka i (nie taka) naiwna implementacja ruby.
Szybkie wyjaśnienie:
Najpierw deklaruję ciągi znaków przedstawiające cyfry włączone i wyłączone dla poziomych i pionowych pasków.
Potem czytam skalę i cyfry.
Następnie deklaruję tablicę o niezbędnym rozmiarze do przechowywania wystarczającej liczby linii dla danej skali. Dziwny ciąg jest w rzeczywistości odwzorowaniem 7-bitowych wartości reprezentujących, które diody LED należy włączyć dla każdej cyfry.
Następnie dla każdej cyfry wypełniam tablicę wyjściową od góry do dołu, biorąc pod uwagę skalowanie w poziomie.
Ostatnią pętlą jest wypełnienie wierszy, które mają tylko pionowe paski, które można wygenerować ze środkowego i dolnego rzędu poprzez usunięcie poziomych pasków.
Na koniec wypisuję tablicę wyjściową!
źródło
Python 2.6 bez importu. Powiedziałbym, że atrakcyjność tego rozwiązania polega na użyciu szablonów. Niestety myślę, że właśnie dlatego tak trudno mi było go zagęścić.
I nieco krótszy (308 znaków):
źródło
(Edycja: To rozwiązanie jest teraz nieprawidłowe, ponieważ
銻
zmieniła się semantyka instrukcji. Nie zdawałem sobie sprawy, że już skorzystałem z instrukcji, gdy ją zmieniłem. Możesz jednak naprawić ten program, po prostu zmieniając go na nowsza instrukcja壹
).Sclipting - 85 znaków①
Wkład:
Wydajność:
②
Wkład:
Wydajność:
źródło
銻
się壹
, ale to by uczynić ten wpis oszukiwania, ponieważ壹
został wymyślony po to wyzwanie została wysłana.C # (
480443 znaków)Rozszerzona wersja:
Moim pomysłem było podzielenie zadania na 5 poziomych linii, które z kolei są podzielone na lewą, prawą i środkową część dla każdej postaci.
źródło
;
(480); możesz pisaćAction<z,z,z,int>q=(l,m,r,n)=>{...};
(470); możesz zrobić pierwszy parametrh
achar
i zrobić""+
wnętrzeh
(467); i wreszcie możesz zadeklarować i ponownie użyćz d="134579",b="1237"
(465). To najmniejszy, jaki udało mi się do tej pory zrobićWydaje mi się, że istnieją bardzo krótsze rozwiązania, ale ponieważ nie jest to golf kodowy, jestem bardzo zadowolony!
Ten skrypt PHP przyjmie dwie liczby
a
,b
od STDIN i echab
w formacie LED, wa
rozmiarze.EDYCJA: Patrząc na poprzedni przykład wyjściowy, błędnie przypuszczałem, że odstęp między cyframi powinien być tak duży, jak
a
rozmiar. Zostało to naprawione w deklaracji PO, że nie jest potrzebne miejsce.źródło
C #,
435359473 bajtówEDYCJE:
Oto kod do gry w golfa (z dodanymi podziałami linii i białymi spacjami):
źródło
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
przestrzeni nazw sprowadza się do 423C (
561492 bajtów)Autor jest frmar. Wysłał mi swoją odpowiedź w zeszłym tygodniu (jeszcze nie założył konta).
492 bajty, ale nieco bardziej zaciemnione:
Poprzednia wersja wykorzystująca 561 bajtów:
Oryginalna wersja z frmar (623 bajty):
Kompilacja:
Przykłady z użyciem domyślnej
0123456789
liczby, ale o różnych rozmiarach:Inne przykłady:
Większe rozmiary:
źródło
Perl + FIGlet + BRA * : 54 znaków
Uznałem, że byłoby to dość łatwe w przypadku FIGlet , ale nie wydaje się, aby były odpowiednie czcionki do tego celu. Więc zrobiłem trochę :-)
Oto jak to wygląda na terminalu:
* BRA: rażące nadużycie zasad
źródło
PERL,
261 244 187166 znakówTrochę bitowej zasady kodowania :-)
Kod z dodanymi spacjami:
Perl należy wywoływać za pomocą
-n
:Uwagi:
Gl+%<UWm7=
:-) Jeden znak odpowiada jednej cyfrze, zakodowane są 3 pozycje 3 kolejnych znaków w" _ _|_| |_ |"
ciągu.c
, który zapewnia także przybliżenie pionowe dla drugiej i trzeciej linii.c
.Mój
sed
program nie może powiększyć, ale wygląda o wiele ładniej, prawda? :-)Prawie pomysł, z którego korzysta mój skrypt PERL, ale w PERL jest o wiele brzydszy. Zauważ, że dla mojego programu sed wolałem używać,
9
który ma podkreślenie w ostatnim wierszu, aby być jak odwrócona 6.źródło
C #,
386382364 znaków / 374 bajtów (UTF-8) i (wiele?) Miejsca na ulepszenia ...EDIT Crap ... Brakowało mi części „skali”
Dam mu kolejny strzał, jeśli się do tego zabiorę ...
źródło
J - 147
95znakówDodano wymagane skalowanie:
Wersja z adnotacjami:
Przykład:
źródło
Ruby, 126 znaków ASCII
Każda cyfra jest kodowana w postaci mapy bitowej w jednej trzeciej, a każda trzecia reprezentowana jest przez cyfrę ósemkową.
Ponieważ wszystkie cyfry mają ustawiony bit 64-bitowy lub 32-bitowy, zakres wynosi od 044 do 177 ósemki. Niestety 177 jest niedrukowalnym znakiem DEL, więc magiczny ciąg znaków zawiera liczby 2 poniżej wymaganego kodu bitmapowego i musimy ponownie dodać 2 w funkcji.
Niegolfowany w programie testowym
Wydajność
źródło
Perl 6,
284241237Poprzednie rozwiązania:
źródło