Diberi dua nomor acak A, B. Cetak angka B sebagai Pola LED Digital dengan A adalah skalanya.
memasukkan:
1 2320451640799518
ouput:
_ _ _ _ _ _ _ _ _ _ _ _
_| _| _|| ||_||_ ||_ |_|| | ||_||_||_ ||_|
|_ _||_ |_| | _| ||_| ||_| | | | _| ||_|
memasukkan:
2 23
ouput:
__ __
| |
__| __|
| |
|__ __|
Aturan:
Gunakan STDIN / STDOUT untuk input / output
Kode dengan kemenangan terbanyak menang. Dalam kasus Tie, kode terpendek akan diterima
Jawaban terbanyak akan diterima pada 01/02/2014 (Menerima jawaban ini dengan 12 suara terbanyak)
9
dalam jawaban saya , karena saya lebih menyukainya :-)Jawaban:
Commodore 64 BASIC
Aturan seni PETSCII :)
Keluaran:
sumber
Python 3,
286 282280Ya saya bermain golf yang satu ini. Tantangan yang bagus!
Juga, inilah versi Python 2 dengan berat hanya 273 byte!
Tidak memperbarui yang ini lagi dengan sumber asli golf lebih lanjut. Ini dibuat ketika sumber aslinya 282 byte (versi Python 3).
Ini mungkin curang, jadi saya menambahkannya secara terpisah. Beri tahu saya apakah ini dianggap valid atau tidak.
sumber
Haskell (389 karakter)
Solusinya menggunakan 7 array, satu untuk setiap segmen array, menggunakan nama-nama dari gambar ini:
. Nilai
a !! 4
akan menjadi karakter yang harus ditampilkan pada posisi itu untuk nomor 4.Nilai-nilai dikalikan dengan skala mana yang sesuai (menggunakan
r
danrp
untuk replikasi), dan akhirnya dicetak.Kode
Contoh penggunaan
sumber
C,
249226 karakterSolusi golf dalam C:
Dengan spasi kosong ditambahkan:
Catatan:
Saya akan memberikan penjelasan tentang cara kerjanya, jika ada yang peduli.
sumber
#include <stdio.h>
(Karena akan dikompilasi tanpa itu.) Anda juga dapat memasukkan satu intmain()
, misalnyamain(x)
, mencukur 1 byte - meskipun tidak valid tanda tangan, dan dimasukkan kescanf
dalamfor
:for(scanf("%d %98s", &s, &i); …)
mencukur satu lagi. - Coba lihat di sini .#include
, pindahscanf
di dalamfor
, dihapus yang tidak perlu&
di&i
, dan menempatkanint
variabel dalam lingkup global untuk mengeksploitasi statis 0 inisialisasi. Kode sekarang seharusnya masih legal C89, tetapi saya tidak memeriksanya dengan seksama. Saya percaya menempatkan satuint
dimain
tidak sah, jadi saya ditinggalkan itu.int
variabel global. Juga%98s
bisa%s
(untuk string yang lebih lama Anda gagal, apakah itu penting dengan cara apa?)Ruby 2.0
Implementasi ruby naif yang cepat dan (tidak begitu).
Penjelasan cepat:
Saya pertama-tama mendeklarasikan string yang mewakili dan mematikan digit untuk bilah horizontal dan vertikal.
Kemudian saya membaca skala dan angka.
Saya kemudian mendeklarasikan array ukuran yang diperlukan untuk menyimpan garis yang cukup untuk skala yang diberikan. String aneh sebenarnya adalah pemetaan nilai 7-bit yang mewakili LED mana yang harus dihidupkan untuk setiap digit.
Selanjutnya, untuk setiap digit, saya mengisi array output dari atas ke bawah, dengan mempertimbangkan penskalaan horisontal akun.
Loop terakhir adalah untuk mengisi baris yang hanya memiliki bar vertikal, yang hanya dapat dihasilkan dari baris tengah dan bawah dengan menghapus bar horisontal.
Akhirnya, saya mencetak array keluaran!
sumber
Python 2.6 tanpa impor. Saya akan mengatakan bahwa daya tarik dari solusi ini adalah penggunaan template. Sayangnya saya pikir itu sebabnya saya kesulitan memadatkannya.
Dan sedikit lebih pendek (308 karakter):
sumber
(Sunting: Solusi ini sekarang tidak valid karena semantik
銻
instruksi telah berubah. Saya tidak menyadari bahwa saya sudah menggunakan instruksi ketika saya mengubahnya. Namun, Anda dapat memperbaiki program ini dengan hanya mengubahnya ke instruksi yang lebih baru壹
.)Memotong - 85 karakter①
Memasukkan:
Keluaran:
②
Memasukkan:
Keluaran:
sumber
銻
ke壹
, tapi itu akan membuat entri ini curang karena壹
ditemukan setelah tantangan ini diposting.C # (
480443 karakter)Versi diperpanjang:
Ide saya adalah untuk membagi tugas menjadi 5 garis horizontal, yang pada gilirannya dibagi menjadi bagian kiri, kanan dan tengah untuk setiap karakter.
sumber
;
di sana (480); Anda dapat menulisAction<z,z,z,int>q=(l,m,r,n)=>{...};
(470); Anda dapat membuat parameter pertama darih
achar
dan melakukan bagian""+
dalamh
(467); dan akhirnya, Anda dapat mendeklarasikan dan menggunakan kembaliz d="134579",b="1237"
(465). Itu yang terkecil yang bisa saya lakukan sejauh iniSaya kira ada solusi yang sangat singkat, tetapi karena ini bukan kode-golf saya cukup puas!
Script PHP ini akan mengambil dua angka
a
,b
dari STDIN dan gemab
dalam format LED, padaa
ukuran.EDIT: Melihat contoh output sebelumnya, saya salah mengira bahwa ruang antara digit harus sebesar
a
ukuran. Ini telah diperbaiki dengan deklarasi OP bahwa tidak ada ruang yang dibutuhkan.sumber
C #,
435359473 byteEDIT:
Berikut kode golf (dengan jeda baris tambahan dan spasi putih):
sumber
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
namespace membawanya ke 423C (
561492 byte)Penulis frmar. Dia mengirimi saya jawabannya minggu lalu (dia belum membuat akunnya).
492 byte tetapi sedikit lebih dikaburkan:
Versi sebelumnya menggunakan 561 byte:
Versi asli dari frmar (623 bytes):
Kompilasi:
Contoh menggunakan
0123456789
nomor standar tetapi ukuran berbeda:Contoh lain:
Ukuran yang lebih besar:
sumber
Perl + FIGlet + BRA * : 54 karakter
Saya pikir ini akan sangat mudah dilakukan dengan FIGlet , tetapi tampaknya tidak ada font yang cocok untuk tujuan ini. Jadi saya membuat beberapa :-)
Begini tampilannya di terminal:
* BRA: penyalahgunaan aturan terang-terangan
sumber
PERL,
261 244 187166 karakterSedikit filosofi pengkodean bitwise rulez :-)
Kode dengan spasi ditambahkan:
Perl harus dipanggil dengan
-n
:Catatan:
Gl+%<UWm7=
:-) Satu karakter sesuai dengan satu digit, dikodekan adalah 3 posisi 3 karakter berturut-turut dalam" _ _|_| |_ |"
string.c
, yang juga melakukan pembesaran vertikal untuk saluran kedua dan ketiga.c
.sed
Program saya tidak dapat melakukan zoom, tetapi tampilannya jauh lebih bagus, bukan? :-)Cukup banyak ide yang digunakan skrip PERL saya, tetapi dalam PERL itu jauh lebih jelek. Perhatikan bahwa untuk program sed saya, saya lebih suka menggunakan
9
yang memiliki garis bawah pada baris terakhir, seperti terbalik 6.sumber
C #,
386382364 karakter / 374 byte (UTF-8) dan (banyak?) Ruang untuk peningkatan ...EDIT Crap ... Saya melewatkan bagian "skala"
Saya akan mencobanya lagi jika saya bisa melakukannya ..
sumber
J - 147
95karakterMenambahkan penskalaan yang dibutuhkan:
Versi beranotasi:
Contoh:
sumber
Ruby, 126 karakter ASCII
Setiap digit dikodekan sebagai bitmap dalam sepertiga demikian, dengan masing-masing ketiga diwakili oleh digit oktal.
Karena semua digit memiliki bit 64-an atau 32-bit, kisarannya adalah 044 oktal hingga 177 oktal. Sayangnya 177 adalah karakter DEL yang tidak dapat dicetak, jadi string ajaib berisi angka 2 di bawah kode bitmap yang diperlukan, dan kita harus menambahkan 2 kembali pada fungsinya.
Tidak terkurung dalam program uji
Keluaran
sumber
Perl 6,
284241237Solusi sebelumnya:
sumber