Satranç tahtası inşa et


23

Bunu bir PHP mücadelesinde gördüm. Amaç, minimum miktarda kodla 64 kareye (8 * 8) sahip bir satranç tahtası yapmaktır. Yeterince basit, benimki PHP'yi 356 baytta yaptım (etkileyici değil, biliyorum) ve başka bazı yaklaşımları görmek istiyorum. Bu, vanilya sakladığınız sürece herhangi bir dilde yapılabilir, bu nedenle ithalat yapılmaz. En küçük bayt sayısı kazanır.

Çıktı şöyle görünmelidir:

screencap

Ve benim kodum:

<table><?php
$c='black';function p($c,$n){echo'<td style="width:50px;height:50px;background:'.$c.'"></td>';if($n==1){echo"<tr>";}}for($i=1;$i<=64;$i++){if($i%8==0&&$c=="black"){$c="white";$n=1;}elseif($i%8==0&&$c=="white"){$c="black";$n=1;}elseif(isset($n)&&$n==1){$n=0;}elseif($c=="black"){$n=0;$c="white";}elseif($c=="white"){$n=0;$c="black";}p($c,$n);}

Veya okunabilir:

<table><tr>
<?php
$color = 'black';
function printcolor($color, $nl) {

    echo '<td style="width:50px; height:50px; background:' . $color . '"></td>';
    if ($nl == true) {
        echo "</tr><tr>";
    }
}
for ($i=1; $i<=64;$i++) {
    if ($i % 8 == 0 && $color == "black") {
        $color = "white";
        $nl = true;
    } elseif ($i % 8 == 0 && $color == "white") {
        $color = "black";
        $nl = true;
    } elseif (isset($nl) && $nl == true) {      
        $nl = false;
    } elseif ($color == "black") {
        $nl = false;
        $color = "white";           
        } 
    elseif ($color == "white")  {
        $nl = false;
        $color = "black";
    }       
    printcolor($color, $nl);
}

Düzenle:

Üzgünüm, ilk başta çok spesifik değildim:

  • Kareler, vektörel görüntüler hariç, 50px * 50px boyutlarında olmalıdır.
  • Çıktı formatı veya boyutu önemli değil, ayrıca bir görüntü olması da gerekiyor.
  • Değerlendirme amacıyla çıktı, görüntü dosyasındaki veya ekran görüntüsündeki gibi görünür olmalıdır
  • Mücadelenin yayınlanmasından sonra yazılı hiçbir kütüphane

3
PPCG'ye hoş geldiniz, bu meydan okuma gibi, bu zorluğun PHP ile hiçbir ilgisi yok, bu yüzden etiketlerinizi değiştirdim. Ayrıca referans uygulamanızın sorunuza değil, bir cevap olduğuna inanıyoruz. Stewie'nin belirttiği gibi, görüntü çıktısının gereken boyutunu, ayrıca renk özellikleri ve kayıp görüntülere izin verilip verilmeyeceğini belirtmelisiniz.
FryAmTheEggman

2
Yani bazı ASCII sihrine izin verilmiyor mu? :(
Denker

4
Temel ne kadar basit? Bir "içe aktarma" tanımı nedir?
Doorknob

6
Görüntü olması gerekmez, ancak her kare en az 50 piksel olmalıdır? Bu bana karşı çelişkili görünüyor.
Peter Taylor,

4
Buradaki programlama dilleri çok çeşitlidir; bazıları golf oynamak için özel olarak yapılmış ve birçok yerleşik işlevi vardır. Bu nedenle, kütüphane dışı işlevlere getirilen kısıtlamaların kaldırılmasını ve bu sorunun yerine varsayılanı uygulamasını tavsiye ederim (tüm ithalatlar bayt sayımı sayılır; kayıttan sonra yazılan kitaplıklar yoktur).
lirtosiast

Yanıtlar:


13

Octave, 20 18 bayt

2 bayt'ı tıraş ettiğin için @ Bruno'ya teşekkürler .

imshow(invhilb(8))

Sonuç:

enter image description here

Bu cevap burada bulunan bir teknik kullanır . Ayrıca, şekil penceresinin boyutuna bağlı olarak görüntülerin Octave'deki otomatik ölçeklendirilmesine de dayanır.


1
@AlexA. Ayrıca, bir sonraki kuralın "Çıktı formatı ya da boyutu alakalı değil ..." dediği gibi, karelerin tam olarak 50x50 piksel olması gerektiğine ikna olmadım. İnsanlar yorumlarda açıklık istedi, ancak soru güncellenmedi.
kabı

Soruyu düzenledim. Kodunuzu sınayın ve çalışıyor, bu nedenle şu anda en düşük bayt sayısına sahipsin :)
Bruno

Ayrıca> 0 kaldırıldı ve hala çalışıyor, böylece 2 baytı tıraş edebilirsiniz
Bruno

@Bruno Ne? Bu vahşi. Yani görünüşe göre matrisin değerleri (hepsi << 0 veya >> 1) 0 ve 1'e sıkıştırılıyor. Bahşiş için teşekkürler, güncelleyeceğim! : D
kabı

2k için tebrikler!
NoOneIsHere

26

vim, 47 46 44 43

44 üzerinden çarpı hala 44 normaldir ...

iP1 400 <C-p><cr><esc>50i1<esc>YpVr0yk3PyG49PyG:m$<cr>p2GyG3P
i          enter insert mode
P1         signal to NetPPM that we're using black&white (PBM) format
400        width
<C-p>      fancy trick that inserts the other 400 for height
<cr><esc>  exit insert mode on the next line
50i1<esc>  insert 50 '1's (black)
YpVr0      insert 50 '0's (white) by duplicating the line and replacing all chars
yk         copy both lines (yank-up)
3P         paste three times; this leaves us on line two
yG         copy from line 2 to end of file (this is a full row of pixels now)
49P        we need 50 rows of pixels to make a complete "row"; paste 49 times
yG         copy the entire row of the checkerboard
:m$<cr>    move line 2 (the line we're currently on) to the end of the file
           this gives us the "alternating rows" effect
p          we're now on the last line: paste the entire row we copied earlier
2G         hop back to line 2 (beginning of image data)
yG3P       copy the entire image data, paste 3 times

NetPPM formatında (PBM) çıkışlar:

output


2
Bir metin editörü ile grafiksel bir çıktı işlemini tamamlayabilmenizi seviyorum. Golf sahalarından başka PBM örnekleri var mı?
ankh-morpork,

1
@ dohaqatar7 Bilmiyorum, ama daha önce TIMZ'i vim ile yaptım, bu yüzden vim'deki grafikler kesin.
Doorknob

2
Vay canına, hiç <C-p>bir kelimeyi yazmaya başlamadan vim denemeyi hiç düşünmedim ... bu gerçekten kullanışlı!
Şubat'ta

16

CSS, 244 bayt

html{background:#fff}body{width:400px;height:400px;background:linear-gradient(45deg,#000 25%,transparent 25%,transparent 75%,#000 75%)0 0/100px 100px,linear-gradient(45deg,#000 25%,transparent 25%,transparent 75%,#000 75%)50px 50px/100px 100px}

Açıklama: 100x100px diyagonal doğrusal gradyan dört durakla oluşturulur, böylece degradenin çoğu iki 50px üçgen köşenin dışında saydam olur. (Aşağıya bakınız). 50x50px'lik bir ofset ile ikinci bir degrade eklemek, karelerin eksik yarısını doldurur. Vücudun büyüklüğünün arttırılması daha sonra elde edilen desenin tüm satranç tahtasını doldurmak için tekrar etmesini sağlar.


Temiz bir çözüm. Sonunu düşürürsen, iyi çalışması gerekir } .
insertusernamehere

Burada neler olduğunu açıklayabilir misin?
kusur, 04

@flawr Kısmi etki gösteren ikinci bir snippet ekledim, yardımcı olur umarım.
Neil

Bu harika.
Charles,

Gerçekten ihtiyacın var html{background:#fff}mı? Varsayılan olarak, tarayıcıların% 99'u arka planı beyaz, afaik
Downgoat

15

Mathematica, 34 bayt

ArrayPlot@Array[Mod[+##,2]&,{8,8}]

Çıktı bir vektör görüntüsüdür ve bir çerçeveyle çevrilidir.

32 dikdörtgeni doğru konumlandırmak yerine, sadece ikili bir matris oluşturabilir ve ArrayPlotbizim için çalışabiliriz:

enter image description here


Güzel! Gönderdiğiniz için teşekkür ederiz.
Simmons,

İyi görünüyor. Lütfen her kareyi 50 piksel olarak tanımladığınız yeri açıklar mısınız? Ayrıca, test edebileceğim çevrimiçi bir emülatör var mı?
Bruno,

@Bruno Çıktı bir vektör grafiğidir, bu nedenle piksel boyutları gibi bir şey yoktur (görüntünün kendine özgü bir boyutu yoktur - herhangi bir boyutta ölçeklendirilebilir ve görüntülenebilir). Bu yüzden sordum.
Martin Ender,

4
Bekle, GenerateChessBoardWithColorsAsParameters[ColorBlack, ColorWhite, 8, 8, 50, 50]çalışmıyor mu? ;)
Conor O'Brien,

3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Yapıyor, ama bu 73 bayt.
Martin Ender

10

Mathematica, 81 72 55 bayt

Graphics[Rectangle/@Select[Range@8~Tuples~2,2∣Tr@#&]]

Input/Output

Resim önceki sürümün değerlendirmesinde, ancak yine de aynı görünüyor.


8

Oktav, 48 bayt

​​​​​​​​​​​​​​​imwrite(kron(mod((t=0:7)+t',2),ones(50)),'.png')

Bu tamamen Matlab cevabımla aynı şekilde çalışıyor. , ancak spiralOctave'da yok . Bunun yerine, Matlab'ın sahip olmadığı bir özelliği kullanıyoruz: tZaten bir ifadesi olarak atamasını kullanabiliriz, daha sonra kullanmakt aynı ifadede tekrar .

(Bu yeniden ölçeklendirilmiş versiyon, cevapları buraya yığmak istemiyorum =)


1
Sol üst köşe siyah değil beyaz olmalıdır.
Doorknob

2
Çıktı bir dama tahtası olmalıdır, yön belirtilmemiştir.
kusur, 04

2
Üzgünüz, kusur, çıktı bir satranç tahtası olmalıdır. Bir satranç tahtası her zaman "renginde Kraliçe, sağda beyaz" dır (her oyuncunun sağ elinde beyaz bir köşe karesi vardır).
corsiKa

5
Sonra sağa, bir sola oturan bir oyuncu düşünün. Yine: bu zorluk tarafından belirlenmedi, bu sadece sizin yorumunuz.
kusur, 04

8

Saf Bash (harici yardımcı program yoktur), 133

@ Doorknob'un yorumunu bir meydan okuma olarak gördüm . Biraz uzun, ama işte gidiyor:

echo \# ImageMagick pixel enumeration:400,400,1,rgb
for((;x=p%400,y=p/400,c=1-(x/50^y/50)&1,p++<160000;));{
echo "$x,$y:($c,$c,$c)"
}

Çıktı, Imagemagick'in .txt biçiminde . Bunun saf Bash olduğuna dikkat edin. Ne Imagemagick ne de herhangi bir harici yardımcı program bu çıktının üretilmesi için üretilmez. Ancak, çıktı bir .txt dosyasına yönlendirilebilir ve ImageMagick displayyardımcı programıyla görüntülenebilir:

enter image description here

Bu görüntü formatı çok hoş çünkü sadece saf metin değil, satır başına bir tane olmak üzere tüm piksellerin (x, y ve renk değeri) bir listesinden biraz daha fazla. Tüm piksel değerlerini aritmetik olarak büyük bir döngüde türetmek oldukça basit bir konudur.


Önceki cevap, 167

echo "\"400 400 2 1\"
\"  c white\"
\"b c black\""
printf -vf %50s
a="$f${f// /b}"
o=("\"$a$a$a$a\"" "\"${f// /b}$a$a$a$f\"")
for i in {0..399};{
echo "${o[i/50%2]}"
}

Çıktı, ImageMagick yardımcı programıyla da görüntülenebilecek olan X_PixMap metin görüntü dosyası biçimindedirdisplay .

Not displayYine de kabul edebileceğim şekilde, XPM formatının dışına çıkardım . Her cümlesinin etrafındaki çift tırnak işareti hariç tüm kazanını çıkarmayı başardım ". Başka ne - eğer varsa - yardımcı programlar bunu kabul edecek hiçbir fikrim yok.


6

PowerShell + istediğiniz tarayıcı, 149 143 bayt

GDI çağrılarının tümü (yani, PowerShell’in çizmek için kullandığı şeyler).

"<table><tr>"+((1..8|%{$a=$_;-join(1..8|%{'<td style="width:50px;height:50px'+("",";background:#000")[($a+$_)%2]+'"></td>'})})-join'</tr><tr>')

Düzenleme - sayesinde altı bayt kaydedildi @NotThatCharles

Bu, 1..8sağlanan PHP örneğine benzer şekilde büyük bir ol 'HTML dizesi oluşturmak için iki for-loop kullanır ve onu boru hattına çıkarır. Her seferinde eklenip eklenmeyeceğini hesaplıyoruz;background:#000 tahta arkaplan 2'deki mevcut pozisyonumuzu alarak siyah arka planlara .

Kullanmak için çıktıyı istediğiniz dosyaya yönlendirin (örneğin, bunun gibi bir şeyle > chessboard.htm) ve sonra onu tercih ettiğiniz tarayıcıda başlatın. Aşağıdaki ekran görüntüsü için "c.htm" ve Firefox kullandım.

firefox


Bu beklenmedik bir şeydi ama ben bir şekilde hoşuma gitti :)
Bruno

whiteve blackolabilir #fffve #000... ama neden beyazı belirtmekle uğraşmıyorsun?
Charles,

(";background:#000","")[($a+$_)%2]bunun yerine deneyin .
Charles,

@NotthatCharles Durr, beyaz ve siyah flip-float'ım vardı, bu yüzden sadece beyaz kareler çıktı. Kaydedilen ek 4 bayt için düzeltildi.
AdmBorkBork

5

PHP + CSS + HTML, 136 bayt

Masanın yaklaşmasını daha yüksek bir seviyeye çıkarmak:

<table><?for(;++$i<9;)echo'<tr>',str_repeat(["<td b><td>","<td><td b>"][$i&1],4);?><style>td{width:50px;height:50px}[b]{background:#000}

Aşağıdaki kodu oluşturur:

<table><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><tr><td><td b><td><td b><td><td b><td><td b><tr><td b><td><td b><td><td b><td><td b><td><style>td{width:50px;height:50px}[b]{background:#000}

Tarayıcıların nezaketine ve CSS'sine çok güveniyor.


Güzel çözüm. <'Den sonra php eklemek zorunda kaldım mı? ve 144 i bitlik bir sonuç veren parametrenin düzgün çalışmasını sağlamak için ilk olarak $ i = 0 ekleyin.
Bruno,

1
@ Bruno Verdiği uyarıya atıfta bulunursanız, uyarılar burada dikkate alınmaz. Ancak, onları etkisizleştirmenin trilyonlarca yolu var. Bunlardan biri değiştirmektir ++$i<9ile @++$i<9. Ayrıca, olmadan çalışabilmesi için , bazı ortamlarda varsayılan olan <?phpyönerge olmalıdır short_open_tags=On. Daha fazla bilgi için stackoverflow.com/tr/2185331/2729937
Ismael Miguel

5

Jöle, 26 bayt

400R%2ẋ€50FU;$ẋ4;;;1j⁶;”PU

Jelly, yerleşik görüntüler için destek almadığından, bir PPM resmi yazdırırız.

Çevrimiçi deneyin! (hız için küçük tahta, ham PPM)

Sonuçlar

screenshot

Nasıl çalışır

400R%2ẋ€50FU;$ẋ4;;;1j⁶;”PU  Main link. No arguments.

400                         Set the left argument to 400.
   R                        Yield [1, ..., 400].
    %2                      Compute the parity of each integer.
      ẋ€50                  Replace each parity by an array of 50 copies of itself.
          F                 Flatten the resulting, nested list.
                            This creates the first rank of the board.
             $              Combine the two atoms to the left:
           U                  Reverse the array of parities.
            ;                 Concatenate the reversed array with the original.
                            This creates the first two ranks of the board.
              ẋ4            Repeat the resulting list four times.
                            This creates all eight ranks of the board.
                ;           Append 400, the link's left argument.
                 ;          Append 400, the link's left argument.
                  ;1        Append 1.
                    j⁶      Join, separating by spaces.
                      ;”P   Append the character 'P'.
                         U  Reverse the resulting list.

Rekabet etmeyen sürüm (24 bayt)

Bu gönderiden önce gelen en yeni Jelly tercümanı xdüzgün bir şekilde vektörleşmedi . En son sürümle, 2 ek bayt kaydedilebilir.

400R%2x50U;$ẋ4;;;1j⁶;”PU

Tek fark, x50düz bir liste (her orijinal eleman 50 kez tekrarlandıysa) vermesidir, bu yüzden Fartık gerekli değildir.


1
Bir java cevabı yazıyor gibi görünüyorsunuz ve yazarken biraz uyuya kalmışım ;...;)
Conor O'Brien, 23

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Java? Java 10.0, Golf Sürümü’nde olmalısınız, çünkü bu gördüğüm herhangi bir Java’ya
benzemiyordu

5

MATL , 11 (27) bayt

8:t!+Q2\TYG

Bu aşağıdaki rakamı üretir. İçsel bir boyuta sahip değil; Şekil penceresinin boyutuna bağlı olarak otomatik olarak ölçeklendirilir. Buna meydan okumaya izin veriliyor gibi görünüyor.

enter image description here

açıklama

8:      % row vector [1,2,...8]
t!      % duplicate and transpose into column vector
+       % 8x8 matrix with all pairwise additions
Q       % add 1
2\      % modulo 2. Gives 8x8 matrix of zeros and ones
TYG     % draw image

Otomatik ölçeklendirmeye izin verilmiyorsa:

'imshow'8:t!+Q2\50t3$Y"0#X$

50x50 piksel kareler ile aşağıdaki şekil üretir

açıklama

enter image description here

'imshow'   % name of Matlab function
8:t!+Q2\   % same as above. Produces 8x8 matrix of zeros and ones
50t3$Y"    % repeat each element 50 times in each dimension
0#X$       % call imshow function with above matrix as input

5

Pyth, 28 26 bayt

J*4+*50]255*50]0.wm_mxkdJJ

açıklama

J                          - Autoassign J = V
           *50]0           - 50*[0]
    *50]255                - 50*[255]
   +                       - ^^+^
 *4                        - 4*^
                .w         - write_greyscale(V)
                  m      J - [V for d in J]
                   _       - reversed(V) 
                    m   J  - [V for k in J]
                     xkd   - k^d

Python eşdeğeri

J = 4*(50*[255]+50*[0])
write_greyscale([[k^d for k in J][::-1] for d in J])

Burada deneyin (yalnızca renk değerleri)

Çıktı:

Output


Bayt sayısında güzel bir iş var ama görünür kareler ile geçerli bir çıktıya ihtiyacım var :)
Bruno

@Bruno Çıktı eklendi! PIL'i sadece senin için kurdum: O (daha önce test etmemiştim)
Blue

@muddyfish sorun için teşekkürler ve teşekkürler. Tahtanın başlaması ve beyaz bir kare ile bitmesi gerekir tho :)
Bruno

4

Matlab, 47 (24) bayt

imwrite(kron(mod(spiral(8),2),ones(50)),'.png')

Bu tamamen Octave cevabımla aynı şekilde çalışıyor , ancak spiralbir bayttan tasarruf sağlayanı kullanabildim . spiral(n)bir nxnmatris yapar ve ilk ile spiral olarak doldururn^2 tamsayılarla .

Vectorgraphics'e izin verilirse, 24 baytta yapabiliriz:

imshow(mod(spiral(8),2))

(Bu yeniden ölçeklendirilmiş versiyon, cevapları buraya yığmak istemiyorum =)


4

FFmpeg, 78 82 100 bayt

Sonunda tahta temizliği için etrafında var.

ffplay -f lavfi color=s=400x400,geq='255*mod(trunc(X/50)+trunc(Y/50)+1,2):128'

enter image description here


Daha eski :

ffmpeg -f lavfi -i "color=tan@0:256x256,format=ya8" -vf "scale=400:-1:alphablend=checkerboard" .jpg

Hatalı, ancak aşağıdaki görüntüyü ürettikten sonra çıkacaktır.

enter image description here

(tahta bir miktar toz topladı)


3

CJam, 27 bayt

"P1"400__,2f%50e*_W%+4*~]S*

Çevrimiçi deneyin!(hız için küçük tahta, ham PPM)

Sonuçlar

screenshot

Nasıl çalışır

"P1"                        e# Push that string.
    400__                   e# Push three copies of 400.
         ,                  e# Turn the last one into [0 ... 399].
          2f%               e# Compute the parity of each integer.
             50e*           e# Repeat each parity 50 times.
                            e# This creates the first rank of the board.
                 _W%        e# Create a reversed copy of the resulting array.
                    +       e# Concatenate the original with the reversed array.
                            e# This creates the first two ranks of the board.
                     4*     e# Repeat the resulting array four times.
                            e# This creates all eight ranks of the board.
                       ~    e# Dump all of its items (the pixels) on the stack.
                        ]   e# Wrap the entire stack in an array.
                         S* e# Join that array, separating them by spaces.

3

Utf-8 - 66b içeren HTML

<div style="font:100 50px/48px serif">▚▚▚▚<br>▚▚▚▚<br>▚▚▚▚<br>▚▚▚▚

▚ varlık için kısa doğrudan utf & # 9626;

Unicode Character 'QUADRANT ÜST SOL ve ALT SAĞ' (U + 259A)

aptal ben, 1 utf-8 char çözüm arıyordum-olurdu ... 1b!


2
Fontsize yanlış gibi görünüyor.
Qwertiy

1
Bunun yerine, sol üst köşenin standart bir satranç tahtasındaki gibi beyaz olması için kullanmalısınız . Ayrıca, <pre>yerine <div>yeni satırlar kullanabilmek için yerine kullanın <br>.
Neil,

Bayt sayınız yanlış görünüyor, UTF-8 kodlamasını kullanan 3 bayt için sayıldığı gibi 98 bayt olmalı . Gelecekte, kullanabileceğiniz bu sizin UTF-8 Bayt Sayısı kontrol etmek
Taylor Scott

2

PHP, 166 158 155 bayt

PHP 7.0.2 (kısa etiket etkin) ve Chrome'da çalışır. 48.0.2564.97 m

<table><tr><? while(++$i<=8){while(++$j<=8){echo"<td style=background-color:".($i%2==0?($j%2==1?0:""):($j%2==0?0:"")).";padding:9></td>";}echo"<tr>";$j=0;}

Özelliği bgcolor=0siyah arka planı oluşturmak için kullanabilirsiniz . Bu bir ton baytı tıraş etmeli! Ve bunun yerine, birkaç byte'ı traş etmesi gereken $v%2==0kullanımı $v&1.
Ismael Miguel,

2

PHP> = 5.4, 175 159 149 116 Bayt

<table><tr><? for(;@++$i<65;)echo'<td width=50 height=50 ',$i+@$m&1?:'bgcolor=0','>',$i%8<1?'<tr '.($m=@!$m).'>':'';

<table><tr><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr ><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><tr 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><td width=50 height=50 bgcolor=0><td width=50 height=50 1><tr >

notlar

  • Tıraşlı 16 bayt - Thanks @insertusernamehere
  • Tıraşlı 10 bayt - Thanks @ msh210
  • Tıraşlı 30 bayt - Thanks @Ismael Miguel

1
Muhtemelen bu daha çok golf oynayabilir, ama işte ( 152 bayt ):<table><tr><?php for(;++$i<65;){echo'<td style="width:50px;height:50px;background:#'.(($i+$m)%2?'000':'').'"></td>';if($i%8<1){echo"</tr><tr>";$m=!$m;}}
insertusernamehere

İlk ödevimi kaldırmadıysam (Works, kişisel tuhaflık benim yapmama izin vermiyor), Bunun için teşekkürler
Shaun H

1
Hatta göre sıkı sürümü HTML 4'ün, sen atlayabilirsiniz için bitiş etiketi TR.
msh210

1
Uyarılardan endişe duyduğunuzdan ++$i<65ile değiştirin @++$i<65. Bu $m=$i=0, sadece $m=02 bayttan tasarruf etmenizi sağlayarak azaltabileceğiniz anlamına gelir . Bunun yerine echo 'a'.'b'.'c';yapabilirsin echo 'a','b','c';. Bu, size daha fazla 2 bayt echokaydedebileceğiniz anlamına gelir echo'<td style="width:50px;height:50px;background:#',($i+$m)%2?'':'000','">';. Ayrıca, HTML özellikleri tırnak gerektirmez. Onları çıkarın ve 2 bayt sabe. Ayrıca, daha bgcolorfazla bayt azaltan daha kısa bir öznitelik var! Daha fazla bayt kaydetmek için print()içinde bir kullanabilirsiniz for!
Ismael Miguel,

1
Daha da kaydetmek için, ben yerine ettik ($i+$m)%2ile $i+@$m&1beni bu kaldırmak için izin hangi $m=0. ifÖnünüzde, sizi çıkarabildim ve yerini bir günlük operasyonla değiştirdim. Kaydetmek için daha , Seninkini kaldırdık styleve özellikleri eklendi widthve height. Sahte tarafa daha da fazla girmek için, 48.0.2564.103 m Chrome'un arka plan rengini 0kullanıyorsa özelliği kullanarak siyah kullandığını düşündüm bgcolor. Bu daha fazla azaltmamı sağladı! Daha fazla indirim daha iyidir!
Ismael Miguel,

1

JavaScript, 150

Bu kesinlikle golf olabilir. HTML oluşturur.

for(i=0;i<8;)console.log(`<b style=margin-${['lef','righ'][i++%2]}t:50;width:50;height:50;display:inline-block;background:#000></b>`.repeat(4)+'<br>')

1
Huh, JavaScript'teki şablon dizgilerini hiç bilmiyordum. Güzel.
Cheezey,

1

iKe , 24 bayt

,(;cga;t=\:t:2!-20!!160)

board

Tekniğin özü, bir x koordinat listesi oluşturmak, onları bölmek ve uygun bir bitmap üretmek için eşitlik çapraz ürününü almaktır. Örnek amaçlı küçük örnekler kullanmak:

  !8
0 1 2 3 4 5 6 7

  -2!!8
0 0 1 1 2 2 3 3

  2!-2!!8
0 0 1 1 0 0 1 1

  t=\:t:2!-2!!8
(1 1 0 0 1 1 0 0
 1 1 0 0 1 1 0 0
 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1
 1 1 0 0 1 1 0 0
 1 1 0 0 1 1 0 0
 0 0 1 1 0 0 1 1
 0 0 1 1 0 0 1 1)

burada dene . Teknik olarak iKe, mantıksal bir 160x160 piksel tuval üzerinde çalışır, ancak tam ekran modunda (kaydedilmiş bir bağlantıyı takip ederken varsayılan) bu 3x oranında yükseltilir. Program hala aynı karakter sayısında daha büyük bir bitmap toplayabildiğinden, bunun hala sorunun ruhunu takip ettiğini düşünüyorum; sadece keyfi bir ekran sınırlamasına varıyor.

Güncelleştirme:

iKe öncelikle golf için tasarlanmamıştır, ancak livecoding hala kısalık ve aklı başında gelenlerden yararlanır. Bu sorunu çözmenin bir sonucu olarak, hiçbiri sağlanmamışsa, varsayılan bir palet kullanmasına izin vermeye karar verdim. Bu özel çözüm şimdi şöyle ifade edilebilir:

,(;;t=\:t:2!-20!!160)

Tasarruf (uygun olmayan) 3 bayt.


1

Ayakkabılı Yakut, 97 karakter

Shoes.app(width:400){64.times{|i|stack(width:50,height:50){background [white,black][(i/8+i)%2]}}}

Örnek çıktı:

Chessboard drawn by Ruby with Shoes


Beyaz ile başlamalı ve bitmeli. Aksi takdirde iyi iş :)
Bruno

Hata. @ Bruno teşekkürler. Sabit.
Manatwork

Harika, çok beğenildi :)
Bruno

1

Lua + LÖVE, 138 113 112 106 karakter

function love.draw()for i=0,31 do
love.graphics.rectangle("fill",i%8*50,(i-i%8)/8*100+i%2*50,50,50)end
end

Örnek çıktı:

Chessboard drawn by Lua + LÖVE


Grr! Lua 5.3, //tamsayı bölme operatörüne sahiptir, ancak görünüşe göre, onu içeren bir LuaJIT ile yapılmış LÖVE yoktur. ☹
manatwork

1

GIMP, 539 bayt

gimp -i -b '(let* ((i (car (gimp-image-new 400 400 1))) (d (car (gimp-layer-new i 400 400 2 "b" 100 0)))) (gimp-image-insert-layer i d 0 -1) (define (t x y) (gimp-selection-translate i x y)) (define (x) (t 100 0)) (define (X) (t -100 0)) (define (y) (t 50 50)) (define (Y) (t -50 50)) (define (f) (gimp-edit-fill d 1)) (define (r) (f) (x) (f) (x) (f) (x) (f) (y)) (define (R) (f) (X) (f) (X) (f) (X) (f) (Y)) (gimp-image-select-rectangle i 2 0 0 50 50) (r) (R) (r) (R) (r) (R) (r) (R) (gimp-file-save 1 i d "c.png" "c.png") (gimp-quit 0))'

Ungolfed Şeması script-fu:

(let* ((i (car (gimp-image-new 400 400 GRAY)))
       (d (car (gimp-layer-new i 400 400 GRAY-IMAGE "b" 100 NORMAL-MODE))))

  (gimp-image-insert-layer i d 0 -1)
  (define (t x y) (gimp-selection-translate i x y))
  (define (x) (t 100 0))
  (define (X) (t -100 0))
  (define (y) (t 50 50))
  (define (Y) (t -50 50))
  (define (f) (gimp-edit-fill d BACKGROUND-FILL))
  (define (r) (f) (x) (f) (x) (f) (x) (f) (y))
  (define (R) (f) (X) (f) (X) (f) (X) (f) (Y))

  (gimp-image-select-rectangle i CHANNEL-OP-REPLACE 0 0 50 50)
  (r) (R) (r) (R) (r) (R) (r) (R)
  (gimp-file-save RUN-NONINTERACTIVE i d "c.png" "c.png")
  (gimp-quit 0))

Toplu iş modunda, boş bir görüntü oluşturun, 50x50 dikdörtgen bir seçim oluşturun, doldurun ve ardından görüntüyü kareler halinde doldurarak art arda hareket ettirin. Sonra kaydetc.png ve çıkın.

Çıktı:

chessboard png


1

J, 33 31 bayt

İkili numara kullandım.

   load'viewmat'
   viewmat 8 8$#:43605

... çünkü 43605'in ikili değeri 1010101001010101'dir (bunu #:elde etmek için ilkel kullanıyoruz ). İlkel, $bu ikili basamak dizisini boyutlarla belirtilen bir matrise şekillendirir 8 8. Ve viewmatsadece bir sistem kütüphanesidir. Pencere tamamen yeniden boyutlandırılabilir.
enter image description here

Kısaca kısaltıldığı için @ FrownyFrog'a:

   load'viewmat'
   viewmat#:8$170 85

viewmat 8$#:170 851 byte daha kısa
FrownyFrog

1
viewmat#:8$170 85
FrownyFrog

1

Excel VBA, 82 Bayt

A1:H8ActiveSheet nesnesindeki aralığa giriş yapmayan ve dama tahtası çıktı veren anonim VBE acil pencere işlevi

Cells.RowHeight=48:[B1:B8,D1:D8,F1:F8,H1:H8].Interior.Color=0:[A2,A4,A6,A8].Delete

Bu işlev, önce aralıkta 4 siyah sütun oluşturarak çalışır B1:B8,D1:D8,F1:F8,H1:H8 ardından satırlardaki renklendirmeyi 2,4,6 and 8bir hücre sola kaydırmak suretiyle çalışır.

Örnek çıktı

CheckerBoard


0

Perl 5 - 80

Bir .PBM dosyası oluşturur:

print 'P1'.' 400'x2 .$".(((0 x50 .1 x50)x4 .$")x50 .((1 x50 .0 x50)x4 .$")x50)x4

0

PowerShell + GDI, 346 bayt

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$f=New-Object Windows.Forms.Form
$f.width=$f.height=450
$g=$f.CreateGraphics()
$f.add_paint({0..7|%{$y=$_;0..7|%{$g.FillRectangle((New-Object Drawing.SolidBrush ("white","black")[($_+$y)%2]),(new-object Drawing.Rectangle ($_*50),($y*50),50,50))}}})
$f.showDialog()

(yeni satırlar noktalı virgülle aynıdır, bu nedenle okunabilirlik için yeni satırlar)

Diğer cevabımın aksine bu, GDI + işlev çağrılarını çağırmak için .NET derlemelerini kullanıyor . İlginç bir şekilde, yaklaşık iki kat daha uzun.

İlk iki satır System.Windows.Formsve System.Drawingaksamları yükler . Birincisi değişmez pencere ve bunun için tuval için kullanılır, ikincisi tuval üzerinde grafikler yaratan çizim nesnesi (bu kodda, bir fırça) için kullanılır.

Sonra bizim form oluşturmak $fsonraki satıra ile ve bunun ayarlamak widthve heightolmaya 450. Bunun olmadığını unutmayın50*8 , çünkü bu sayılar, form penceresinin başlık çubuğu, kapat düğmesi, vb.

Bir sonraki satır $gboş kurucuyu çağırarak tuvalimizi oluşturur. Bu, varsayılan olarak formun sistem dışı alanının sol üst kısmına eşittir 0,0ve sağa ve aşağı doğru yükselir, ihtiyaçlarımız için mükemmeldir.

Bir sonraki satır, grafikleri çizen asıl çağrı $f.add_paint({...}). Grafik çağrıları her iki döngüden bir döngü 0..7değişkeni için çift döngü alarak ve bir yardımcı değişken taşıyarak inşa ediyoruz $y. Her iç döngüde, tuvalimize .FillRectangle(...,...)karelerimizi çizmemizi söyleriz . İlk parametre SolidBrush, tahtanın neresinde olduğumuzu temel alan renklerle yeni bir yapı oluşturur . Diğer seçenekler burada olabilir bir kapak, bir gradyan, vb ikinci parametre, bir yeni Rectanglebelirtilen x başlayan nesne $_*50ve $y*50koordinatları ve uzanan 50her bir yönde. Unutma, 0,0sol üst.

Son satır sadece çıktıyı ile gösterir .showDialog(). PowerShell Forms

Bir form nesnesi yarattığımızdan ve PowerShell'in tamamı boru hattıyla ilgili olduğundan, açılan formun kapatılması bir System.Enum.DialogResultnesnenin içinden geçecektir Cancel, çünkü kullanıcının teknik olarak yaptığı şey budur. Bu sonucu yakalamadığımız veya başka bir şey yapmadığımız Canceliçin, program sona erdiğinde kelime boru hattında kaldığı için kelime STDOUT görünecektir.


0

SEÇ. , 8844 8278 bayt

(9,9,50)EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LEFT.LEFT.EXP.SELECT.EXP.RIGHT.SELECT.LOG.LEFT.SELECT.EXP.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.EXP.RIGHT.RIGHT.SELECT.LEFT.LEFT.EXP.RIGHT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOOP.RIGHT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.CONJ.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LEFT.EXP.SELECT.RIGHT.LOG.LEFT.SELECT.EXP.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.LEFT.SELECT.RIGHT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOOP.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.LEFT.END.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.RIGHT.END.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.RIGHT.EXP.SELECT.EXP.LEFT.SELECT.RIGHT.LOG.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.LOG.RIGHT.SELECT.EXP.SELECT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.RIGHT.SELECT.LEFT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.EXP.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.LOG.RIGHT.SELECT.LEFT.PRINT.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.LEFT.END.RIGHT.RIGHT.LOG.SELECT.LOG.RIGHT.SELECT.LEFT.EXP.LEFT.SELECT.RIGHT.LOOP.RIGHT.EXP.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.LEFT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.END.RIGHT.RIGHT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.LEFT.SELECT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.RIGHT.LOG.RIGHT.SELECT.EXP.LEFT.LEFT.SELECT.RIGHT.RIGHT.EXP.LEFT.SELECT.RIGHT.LOG.RIGHT.SELECT.LEFT.END.

Elbette uzun, ancak bu görev için oluşturduğum ilk iki sürüm iki katıydı.

Çıktı:

screenshot

Nasıl çalışır:

İşte onu üretmek için kullanılan program:

init(9,9,50)
makenum(8)
square()
dec()
loop("main",computei=True)
go(1)
makenum(8)
go(1)
copyfrom(-2)
intdiv(-1)
add(-5)           # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) (n//8+n%8)
go(1)
makeneg1()
exptarget(-1)
go(1)
ifnonpositive("drawtest")
go(1)
makenum(-4,-4)    # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 (-4-4I)
go(1)
multiply(-4,-11)   # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 -4-4I (nI//8)
add(-16)          # n%8 blah blah blah blah n//8 k^(n//8) k^(n%8) n//8+n%8 (-1)^(n//8+n%8) 4 1/2 I k^(-4I) -1 -4-4I nI//8 k^(nI//8) k^(n%8) (n%8+nI//8)
add(-4)           # n%8 blah blah blah blah n//8 (-1)^(n%8) 4 1/2 I k^(-4I) -1 -4-4I nI//8 k^(nI//8) k^(n%8) n%8+nI//8 k^(n%8+nI//8) k^(-4-4I) ((n%8-4)+I(n//8-4))
output()
endif("drawtest")
go(1)
endloop("main")
writetofile("chessboard4")

Başka bir deyişle, n'den 0'a 63'e kadar olan n döngüleri, (n% 8-4) + (n // 8-4) i kareleri çizer, (-1) ^ (n // 8 + n% 8) değilse pozitif.


Bu gerçekten golf değil: p?
Bruno,

Görevi yapan en kısa program olduğundan emin değilim, hayır. Ancak, bu ve bu dilde mümkün olan en iyi çözüm arasındaki farkın, programın toplam uzunluğu ile karşılaştırıldığında önemsiz olduğuna oldukça eminim. Daha kısa veya kısa olabileceği aklıma gelen bir fikrim var. Bir süre sonra deneyeceğim.
quintopia

0

JavaScript (ES6), 147

for(i=0;++i<72;)document.write(`<div style="${i%9?'':(++i,'clear:both;')}float:left;width:50px;height:50px;background:#${i&1?'fff':'000'}"></div>`)


0

Python, 57 bayt

c=50*"1"+50*"0"
print"P1 400 400 "+4*(200*c+200*c[::-1])

c50 beyaz ve 50 siyah pikselden oluşan bir çizgidir 200*c, önünde beyaz olan satır 200*c[::-1], tersi.

PPM olarak çıktı, kullanım:

python golf_chess.py > chess.ppm
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.