Matrix Digital Rain'i en kısa kod kodunu kullanarak yapın [kapalı]


21

Kurallar:

  • Seçtiğiniz herhangi bir dil (Standart Kütüphaneler).
  • Terminal veya Windows Komut İşlemcisi'nde veya tercih ettiğiniz herhangi bir şekilde görüntülenen çıktı .
    (genişlik tamponu = 80)
  • ASCII Karakterler yeterli. (Unicode ekleyebilir)
  • Başlangıçta tüm ekranı doldurmamalı (Yağmur gibi görünmeli, ha!).
  • Renkler bonus puan alır (+5).
  • Etkileri : Rastgele karakterler, farklı düşme boyutları, periyodik olarak yenilenir.

Puan: (güncelleme)

  • Başlamak için +32 puan.
  • ** 1024 *** th * bayttan sonraki koddaki her bayt için 1 karakter (karakter değil) .
  • Puanlar sıfıra ulaşabilir ve negatif olabilir.
  • Not: Çok baytlı karakterleri kullanan dillerin karakterleri değil baytları sayması gerekir.
  • Her yeni efekt için +5 . (başkaları tarafından yayınlanmadı)
  • Bu etkilerin herhangi biri için +15 :
    1. Rüzgar (karakterleri yana doğru üfler)
    2. Sayı Eşleştirme (kullanıcı girişi, örneğin: 90210):
      Sayı matris içinde rastgele konumlandırılmıştır
      görüntü tanımını buraya girin
    3. Ses
    4. Şifreli msj (kullanıcı girişi):
      Karakterler gizli şifreli bir mesajı temsil eder
    5. Galaga modu:
      Ateşler ^ karakterleri yok etmek için
      görüntü tanımını buraya girin

scoreboard:

┌-----┬------------┬------------┬-------------┬---------------┬--------------┐
| pos |    name    |    type    |    bytes    |    effects    |    points  ^ |
|-----|------------|------------|-------------|---------------|--------------|
|1    |nitro2k01   |QBasic      |913          |Colours        |+57           |
|     |            |            |             |Colour Fade    |              |
|     |            |            |             |Sound (+15)    |              |
|-----|------------|------------|-------------|---------------|--------------|
|2    |squeamish   |HTML, Java- |1024         |Colours        |+47           |
|     |ossifrage   |Script, CSS |             |Transition     |              |
|     |            |            |             |Size Variation |              |
|-----|------------|------------|-------------|---------------|--------------|
|3    |manatwork   |Ruby        |374          |Colours        |+47           |
|     |            |            |             |Actual Words   |              |
|     |            |            |             |Character -    |              |
|     |            |            |             |      Disperse |              |
|-----|------------|------------|-------------|---------------|--------------|
|4    |plg         |Bash        |1024         |Colours        |+42           |
|     |            |            |             |Random Pause   |              |
|-----|------------|------------|-------------|---------------|--------------|
|5    |Timtech     |TI-84 calc  |120          |Umbrella       |+42           |
|     |            |            |             |Run Inside     |              |
|-----|------------|------------|-------------|---------------|--------------|
|6    |Samuel Cook |JavaScript  |830          |Colours        |+42           |
|     |            |            |             |Transition     |              |
└-----┴------------┴------------┴-------------┴---------------┴--------------┘

Not: Scoreboard geçerli bir cevap gönderdikten sonra herhangi biri tarafından güncellenebilir / güncellenebilir. İlk on pozisyonu geçmeyin. Kodunuza daha fazla efekt ekleyin ve kendi puanınızı alın!
İlk ekranın temizlenmesi, temizleme, hatalar, üçüncü taraf kütüphaneleri vb. Noktalara sayılmaz. kullanılan bayt ve dil veya programın adıdır.

Neo: Bana ne anlatmaya çalışıyorsun? Mermilerden kaçabileceğimi mi?

Morpheus: Hayır, Neo. Size hazır olduğunuzda mecbur kalmayacağınızı söylemeye çalışıyorum.


Peki ya kütüphaneler?
Vereos

İhtiyacınız kadar kitaplık ekleyin veya alın veya isteyin (standart kitaplıklar)!
Renae Lider

Kod 250 karakterin altındaysa puan ekler misiniz? (Çok kısa bir çözümüm var ancak bir ton özelliği yok)
ThinkChaos

İhtiyacınız olmayacak; Hala +32 puanınız olacaktı! Olasılıklar, çoğu sınırı geçecek ve puanları düşürmeye başlayarak kısa kodların skorbordda yukarı çıkmasını sağladı. (ayrıca, daha fazla kural ve puan eklemek işleri zorlaştırır)
Renae Lider

Tamam, sadece eğlence için golf versiyonunu ekleyeceğim!
ThinkChaos,

Yanıtlar:


18

HTML, Javascript ve CSS: 1024 bayt, 47 puan

Matrix yağmur demosu

Özellikler:

  • Unicode karakterleri kullanır (bunun olsa da puan kazandığını düşünmeyin)
  • Yollar çizilirken parlaktan koyu yeşile kaybolur (*)
  • İzler bittikten sonra koyu yeşilden siyaha da soluyor (*)
  • Her izde rastgele metin boyutu (*)
  • İzler her çekildiğinde rastgele olarak yeniden konumlandırılır ve yeniden boyutlandırılır

(*) Bunların her biri için +5 puan talep edeceğim, ama katılmıyorum eğer bana bildirin :-)

Demo:

http://ruletheweb.co.uk/matrix.html

Kaynak kodu:

Tam olarak 1024 bayt. Biraz çirkin, korkarım.

<head><style>*{margin:0;padding:0;line-height:1;overflow:hidden;}div{width:1em;position:absolute;}</style><script>
w=window;n=w.innerWidth;m=w.innerHeight;d=document;q="px";function z(a,b){return Math.floor(Math.random()*(b-a)+a)}f=" 0123456789";for(i=0;i<45;i++)f+=String.fromCharCode(i+65393);function g(){for(i=0;i<90;i++){r=d.createElement("div");for(j=z(20,50);j;j--){x=d.createElement("pre");y=d.createTextNode(f[z(0,56)]);x.appendChild(y);x.style.opacity=0;r.appendChild(x)}r.id="r"+i;r.t=z(-99,0);with(r.style){left=z(0,n)+q;top=z(-m,0)+q;fontSize=z(10,25)+q}d.body.appendChild(r);setInterval("u("+i+")",z(60,120))}}function u(j){e=d.getElementById("r"+j);c=e.childNodes;t=e.t+1;if((v=t-c.length-50)>0){if((e.style.opacity=1-v/32)==0){for(f in c)if(c[f].style)c[f].style.opacity=0;with(e.style){left=z(0,n)+q;top=z(-m/2,m/2)+q;opacity=1}t=-50}}e.t=t;if(t<0||t>c.length+12)return;for(f=t;f&&f>t-12;f--){s=1-(t-f)/16;if(f<c.length&&c[f].style){c[f].style.opacity=s;}}}
</script><body text=#0f0 bgcolor=#000 onload=g()>

2
Bir ekran görüntüsü olarak iyi görünüyor ama kaynaklarımı mahvetti. Benden +1
Samuel Cook

Gerçekten havalı! Unicode karakterlerini çalabilirim :) +1
ThinkChaos

1
UglifyJS, JavaScript kaynak kodundan 17 karakter kaldırabilir. Bu gerçekten önemli değil, çünkü bu kod golf değildir (maksimum 1024 karakterlik bir zorluktur).
Konrad Borowski

Bu, Google sonuçlarının ilk iki sayfasında bulduğum en iyi sürüm. Gerçekten eklemek istediğin bazı düğümleri çıkaracak bir yerin olmasını isterdim :) gerçekten bilgisayarımı o açık bırakmak için öldürür
RustyToms

10

darbe

1024 bayt (yorumlar dahil)

COL=80
ROW=$(tput lines)

cleanup() {
  wait # wait for background jobs (the drops)
  # clear; move cursor to (1,1); show cursor
  # reset color
  printf '\033[2J\033[1;1H\033[?25h\033[0;0m'
}

drop() { # $1=column ; $2=row to end on ; $3 = drop size (ranges from 5 to 15)
  for ((r=1; r<$2+$3+1; r++)); do
    # if before drop's end point : print lowest char in white
    [ $r -lt $2 ] && printf "\033[$r;$1H\033[0;0m\u$[RANDOM % 59 + 21]"

    # if before or on drop's end point : replace older white char with a green one
    [ $r -le $2 ] && printf "\033[$[r-1];$1H\033[0;32m\u$[RANDOM % 59 + 21]"

    # if drop's longer than it's size : erase last char
    [ $r -gt $3 ] && printf "\033[$[r-$3];$1H "

    # wait before moving drop down
    sleep .1
  done
}

# cleanup on exit
trap cleanup EXIT
# clear screen; hide cursor
printf '\033[2J\033[?25l'

# loop with delay
while sleep .1; do
  # start a drop in background : column; ending row; size
  drop $[RANDOM % COL] $[RANDOM % ROW + ROW/3] $[RANDOM % 10 + 5] &
done

Yeni efektler:

  • her şey (ilk giriş);)
  • damla ekranda rastgele duracak
  • serin renk efektleri: diğerleri yeşil iken son karakter beyaz
  • rastgele karakterler ve kaçış dizileri konsolda kalıyor ... Tamam, bu bir hata ama terim imleç hareketine ayak uyduramadığı için

Golfed 188 186 176 :

d(){ for((r=1;r<$2+41;r++));do $4"$3$r;$1H\u$[RANDOM%59+21]";(($r>$2))&&$4"$3$[r-$2];$1H ";$s;done;}
s=sleep\ .1;while $s;do d $[RANDOM%80] $[RANDOM%10+5] '\033[' printf\ &done

Bu 80x40 ızgarada çalışır. Bunu RANDOM%80, son satırda ve r<$2+412. satırda değiştirebilirsiniz . Izgaradan çıktıktan sonra damlaları temizlemiyorum, bu yüzden teriminizi 80x40 olarak yeniden boyutlandırın veya 41 olarak değiştirin $LINES+1. Tam sürüme kıyasla sahip olmadığı birkaç şey var:

  • terim hazırlama veya temizleme
  • süslü renklendirme (52 bayt alır, buna değmez)
  • Rastgele durma (burada düşer her zaman aşağıya doğru iner)
  • "Düşmeler" için minimum bir uzunluk belirterek bunu 174'e indirebilirim: $[RANDOM%10+5]olur$[RANDOM%15]

Bu sınırlamalarla bile bence oldukça havalı!

Düzenleme: Squishish ossifrage gibi unicode karakterleri kullanmayı denedim, ancak çift genişlikli karakterleri olduğu için ızgarayı oldukça hızlı dolduruyorlar ve garip görünüyorlar.

Ayrıca ASCII yerine unicode kod noktalarını kullanarak golf versiyonunu düşürdüm, bu yüzden bir karakter kazanmadan önce bir adım atarak oktal olmam gerekmiyor. Aynı şeyi ana sürümde de yaptım, ancak 1024 baytta tutmak için yorumlar ekledim.

Ve o andan itibaren int karşılaştırma değişti [ $r -gt $2 ]için (($r>$2))beyaz boşluk beni öldürüyor olduğunu, ancak başka bir yöntem olduğunu karşılaştırıldığında int değil dizeleri bulamadık. Bu golf versiyonunu 176 bteğe düşürdü!


golf sahası, bir de çatal bombadır;)
Rob Starling,

1
@RobStarling ikisi de aslında!
ThinkChaos,

1
Bunu gerçekten sevdim! Ben onunla biraz tinkered ve bunu değiştirerek yeşile yapabilir görünüyor \033[için \033[0;32m\033[(benim terminali en az). Bir terminal ekran koruyucu olarak bunu denemek ve kurmak için ne kadar kötü bir fikir? : P
Dom Hastings,

Hmm. Birincisi 1059 baytı, ikincisi 190 baytı alıyorum.
Renae Lider

1
Siz temelde büyücüsünüz! Paylaşım için teşekkürler!
Dom Hastings,

8

JavaScript, 830 bayt

Gibi tüm klasik özelliklere sahiptir:

  1. siyah arka plan
  2. yeşil metin
  3. düşerken beyaz metin
  4. rastgele karakterler
  5. boş delikler
  6. sonsuz döngü

window.onload=function(){
    var tbl=document.createElement('table'),
	body=document.body;
	body.style.backgroundColor='#000';
	body.style.color='#060';
	body.style.fontFamily='Lucida Console';

    for(var i = 0; i <= 30; i++){
        var tr = tbl.insertRow();
        for(var j = 0; j <= 50; j++){
            var td = tr.insertCell();
			td.style.width="2%";
        }
    }
    body.appendChild(tbl);
	setInterval(function(){
		rain(Math.floor((Math.random()*50)),0)
	},20);
}
function rain(n,i) {          
   setTimeout(function (){
	  var e=document.getElementsByTagName('tr')[i].childNodes[n];
	  e.style.color='#fff';
      e.innerHTML = '&#'+Math.floor((Math.random()*127)+1)+';';
	  setTimeout(function(){e.style.color=''},200)
	  
      if (i++ < 30) rain(n,i);
   },20);
};

Bunu sevdim çünkü inanılmaz derecede hafif, hareketli akışkan ve basit. keyfini çıkarın!


6

QBasic 1, 587 bayt, 32 + 5 = 37 puan

DECLARE SUB d (p!, s!, x!, y!)
DIM t(80)
FOR i = 1 TO 80
    t(i) = INT(-50 * RND)
NEXT
s = TIMER

CLS
WHILE 1
    FOR i = 1 TO 80
        IF t(i) > 28 THEN t(i) = 0
        t(i) = t(i) + 1
        y = t(i)
        d 0, 0, i, y - 6
        d 2, 0, i, y - 5
        d 2, 0, i, y - 4
        d 10, 0, i, y - 3
        d 10, 0, i, y - 2
        d 11, 0, i, y - 1
        d 0, 2, i, y
    NEXT

    l = TIMER
    WHILE l = TIMER
    WEND
WEND

SUB d (p, s, x, y)
COLOR p, s
IF y > 0 AND y < 24 THEN LOCATE y, x: PRINT CHR$(33 + (x * y) MOD 200);
END SUB

Örnek ekran görüntüsü:

QBasic matrisi 1

32 baz puan + renk için 5 puan. Ancak, boşluk düzeltme veya optimizasyon olmadan bile 1024 baytın altında çok mutlu bir şekilde yüzdüğüm için, bazı noktaları çalmak için birkaç şey daha ekleyelim:

QBasic 2,913 bayt, 32 + 5 + 15 + 5 = 57 puan

DECLARE SUB d (p!, s!, x!, y!)
DIM t(80)
FOR i = 1 TO 80
    t(i) = INT(-50 * RND)
NEXT
s = TIMER
f = 0
w$ = "bullet"
o = 1
CLS
WHILE 1
    FOR i = 1 TO 80
        IF t(i) > 28 THEN t(i) = 0: IF f THEN SOUND 100 * i, 1
        t(i) = t(i) + 1
        y = t(i)
        d 0, 0, i, y - 6
        d 2 + x, 0, i, y - 5
        d 2 + x, 0, i, y - 4
        d 10 + x, 0, i, y - 3
        d 10 + x, 0, i, y - 2
        d 11 + x, 0, i, y - 1
        d 0, 2 + x, i, y
    NEXT
    k$ = INKEY$
    IF k$ <> "" THEN
        IF MID$(w$, o, 1) = k$ THEN
            o = o + 1
            IF o = LEN(w$) + 1 THEN z = 1: f = 100
        ELSE
            o = 1
        END IF

    END IF
    x = x + z
    l = TIMER
    WHILE l = TIMER
    WEND

WEND

SUB d (p, s, x, y)
COLOR p MOD 16, s MOD 16
IF y > 0 AND y < 24 THEN LOCATE y, x: PRINT CHR$(33 + (x * y) MOD 200);
END SUB

Örnek ekran görüntüsü (renk efekti etkin):

Qbasic matrisi 2

İlki ile aynı özellikler. Ek olarak:

  • Renk (+5)
  • Ekstra özellikleri etkinleştirmek için bir şifre. (Bunun için +5 olduğunu iddia ediyorum. Yeni bir özellik.)
  • Şifre bir solma ve ses efektlerini aktive eder. (Ses için +15)

Şifre ile aktif hale getirilen renk efekti ve ses efekti dahil olmak üzere, onu hareket halinde gösteren video:

http://www.youtube.com/watch?v=MQc-FDl_AZ8


5

GTB , 42 puan

Bir TI-84 hesap makinesinden yürütüldü, yaklaşık 100 bayt:

"  O O    O O   O"→Str1:"O  O   O O  O O "→Str2:0→X[@getkey=25$~""~""~""~""~""~""~""p;&@round(r;$~""#@round(r;$~Str1#~Str2&:&]

Etkileri

Hesap makinesi başlangıçta siyah + beyaz olduğundan, orada fazla bir şey yapamazsınız ...

  • Şemsiye - Yukarı tuşuna basılması yağmuru temizler ve siz basana kadar kuru tutarEnter
  • Koşmak - Basmak ONprogramı kırar ve kuru kalmanız için güzel bir çatı sunar ( Enteriki kez basarak tekrar yağmura geri dönebilirsiniz)

TI-92'mde mükemmel çalışıyor! Muhteşem.
Renae Lider

@ user3058846 Beğendiğinize sevindim :) GTB'nin TI-92'lerde de çalışabileceğinin farkında değildim.
Timtech

Aslında TI-92 Plus.
Renae Lider

@ user3058846 Yani derleyici eh indirdiniz? Güzel iş :)
Timtech

4

Yakut: 374 karakter

$><<"^[[2J"
w=->c,d,m{$><<"^[[0;3%d;%dm^[[%d;%dH%s"%[c,d[4],d[3]+d[1]-m,d[2],d[0][d[1]-m]]}
t=%w{Stack Exchange Programming Puzzle Code Golf}
r=[]
loop{r.map{|o|w[2,o,1]if o[1]>0
w[7,o,0]
o[1]+=1
o[0][0]==" "?r.delete(o):(o[0]=" "*o[1])*o[1]=0if o[1]>o[0].size}
sleep 0.1
r<<[(k=rand(10)%2)==0 ?t.sample: [*?a..?z].sample(rand(10)+5)*"",0,rand(80),rand(20),k+1]while r.size<25}

(Not: ^[tekil karakterlerdir.)

Açıklama:

  • 25 eşzamanlı çalıştırma (düşük tutulduğundan, önceden tanımlanmış metinler okunabilir halde kalır)
  • Her koşunun% 50 /% 50 olma şansı vardır.
    • önceden tanımlanmış bir kelime - parlak renklerde
    • koyu renklerle gösterilen rastgele 5..15 küçük harfli dize
  • Çalışmayı görüntülerken alt renk beyaz, diğerleri yeşil
  • Çalıştırma tamamen görüntülendikten sonra karakter karakter

Örnek çalışma:

matris yağmuru


Kaç bayt (karakter değil)?
Renae Lider,

1
Yalnızca tek baytlık karakterler kullanılır, bu nedenle 374 bayt.
Manatwork

Sürümünüzü gerçekten beğendim! İyi çalışmaya devam et.
Renae Lider,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.