Bantu arsitek memvisualisasikan kaki langit


29

Sebagai bagian dari proyek perencanaan kota, Anda mendapat tugas membuat program atau fungsi yang akan menampilkan cakrawala kota, diberikan beberapa masukan dari arsitek. Proyek ini hanya dalam tahap startup, sehingga sketsa yang sangat kasar sudah cukup. Pendekatan termudah tentu saja dengan hanya menggambar cakrawala dalam ASCII-art.

Semua bangunan akan berada di tepi sungai, sehingga semuanya disejajarkan. Arsitek akan memberikan ketinggian setiap bangunan sebagai input, dan kode Anda harus menampilkan garis langit.

Input dari arsitek akan berupa bilangan bulat atau setengah bilangan bulat. Jika angka tersebut bilangan bulat, bangunan akan memiliki atap yang datar, sedangkan setengah bilangan bulat akan menghasilkan atap yang melengkung. Nol hanya akan menjadi tanah datar. Dinding bangunan terpisah 3 karakter, sedangkan nol akan menjadi lebar satu karakter. Bangunan-bangunan yang berdekatan berbagi tembok.

Untuk detail dan klarifikasi tentang output, silakan lihat contoh-contoh di bawah ini:

N = 3
 ___
|   |
|   |
|___|

N = 3.5
  _      
 / \
|   |
|   |
|___|

N = 6
 ___
|   |
|   |
|   |
|   |
|   |
|___|

n = 0
_

Contoh input: 3 3.5 0 2

      _
 ___ / \  
|   |   |  ___
|   |   | |   |
|___|___|_|___|

Contoh input: 0 0 2.5 3 0 4 1

             ___
    _  ___  |   |
   / \|   | |   |
  |   |   | |   |___
__|___|___|_|___|___|

Louisville ,0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1

                                    ___     ___
                                   |   |   |   |  ___
           _    ___     ___     ___|   |   |   | |   |
          / \  |   |   |   |   |   |   |   |   | |   |
  ___    |   | |   |___|   |___|   |   |   |   | |   |
 |   |___|   | |   |   |   |   |   |   |___|   | |   |___
_|___|___|___|_|___|___|___|___|___|___|___|___|_|___|___|

Karakter ASCII yang digunakan adalah: baris baru, spasi, dan /\_|(titik kode 10, 32, 47, 92, 95, 124).

Aturan:

  • Ini opsional untuk membuat program yang hanya mengambil bilangan bulat sebagai input, dengan mengalikan semua angka dengan dua. Jadi, alih-alih mengambil 3 3.5 2, program Anda mungkin mengambil 6 7 4. Jika format input kedua dipilih, input 6 harus menghasilkan bangunan 3 lantai, 7 harus berupa bangunan 3 lantai dengan atap bernada dll.
  • Outputnya harus persis seperti yang dijelaskan di atas, tetapi spasi tambahan dan baris baru OK.
  • Format input yang tepat adalah opsional. Apapun yang terbaik dalam bahasa Anda.
  • Hasilnya harus ditampilkan di layar, sehingga arsitek dapat melihatnya.
  • Anda dapat mengasumsikan akan ada setidaknya satu bilangan bulat yang diberikan, dan hanya input yang valid yang akan diberikan.

Ini codegolf, jadi kode terpendek dalam byte menang.


1
Seperti apa bentuk bangunan dengan tinggi 0,5?
Tom Carpenter

Belum memikirkan itu benar-benar. Pilihan yang paling jelas adalah atap sederhana, hampir seperti rumah hobbit :-) tetapi Anda bebas untuk memilih, atau Anda dapat berasumsi bahwa inputnya tidak akan pernah menjadi 0,5 ...
Stewie Griffin

1
Saat ini hal-hal aneh terjadi karena tidak ada dinding (saya berasumsi tingginya 0,5 tidak ada), jadi saya harus sedikit mengerjakan jawaban saya.
Tom Carpenter

Saya baru saja mencoba kode Anda dengan tinggi 0,5, dan saya setuju, "aneh" adalah kata yang sangat deskriptif = PI belum memeriksanya secara rinci, jadi saya tidak yakin apa yang sedang terjadi ... Bagaimanapun, jawaban Anda adalah sangat valid, Anda dapat berasumsi tidak ada 0,5 bangunan ...
Stewie Griffin

Jawaban:


5

Python 2, 199 193 188 185 byte

a=map(int,raw_input().split())
l=max(a)+1|1
while~l:print''.join((x%2*'/  _\\ '[x<l::2]*(x<=l<x+4)or'_ '[x|1!=l>1]*3)[x<1:x+2]+'| '[x<=l>=y]*(x+y>0)for x,y in zip([0]+a,a+[0]))[1:];l-=2

Ini adalah program lengkap yang menerima bilangan bulat sebagai input. Contoh input .


hebat! Saya harus mencuri beberapa trik ini untuk golf masa depan ...
quintopia

5

MATLAB, 219 209 203 byte

i=input('');x=1;c=0;m(1:4*numel(i))='_';for a=i;b=fix(a);m(1:b,x)='|';s=95;if a~=b;m(b+2,x+2)=95;s='/ \';end;m(b+1,x+(1:3))=s;x=x+(a>0)*3+1;m(1:b,x)='|';x=x+(a<1&c>0);c=a;end;disp(flipud(m(:,1:x-(a<1))))

Sayangnya ini tidak berfungsi pada Oktaf . Tidak sepenuhnya yakin mengapa, tampaknya ada hubungannya dengan bit disp / flipud yang rusak.

Juga, saat ini tidak ada definisi seperti apa bentuk bangunan setinggi 0,5, atau tidak menyebutkannya, jadi dalam kode ini saya berasumsi bahwa mereka tidak diizinkan.

Berikut ini adalah kode dengan cara yang sedikit lebih mudah dibaca:

i=input(''); %e.g. [0 0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1 0 0 1 0]
x=1;
c=0;
m(1:4*numel(i))='_';
for a=i;
    b=fix(a);
    m(1:b,x)='|';
    s=95;
    if a~=b;
        m(b+2,x+2)=95;
        s='/ \';
    end;
    m(b+1,x+(1:3))=s;
    x=x+(a>0)*3+1;
    m(1:b,x)='|';
    x=x+(a<1&c>0);
    c=a;
end;
disp(flipud(m(:,1:x-(a<1))))

Pertama kita mengambil input sebagai array, dan melakukan beberapa inisialisasi variabel.

i=input(''); %e.g. [0 0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1]
x=1;
c=0;

Karena bangunan tinggi nol itu menyusahkan - mereka pada dasarnya berakhir dengan lebar yang bergantung pada apa yang ada di sebelahnya (meskipun apa yang dicetak tidak berubah), kami menyederhanakan berbagai hal dengan menggambar tanah yang cukup untuk semua bangunan. Kami menganggap setiap bangunan memiliki lebar 4 karakter (karena bangunan yang berdekatan bergabung bersama) - nol tingginya tidak, tetapi kelebihannya akan dipangkas nanti.

m(1:4*numel(i))='_';

Sekarang kita menggambar setiap bangunan secara bergantian.

for a=i

Pertama kita mendapatkan bagian integer dari ketinggian karena ini akan menentukan berapa banyak '|' kita butuh.

    b=fix(a);

Sekarang gambar dinding untuk bangunan ini - jika ada dua bangunan yang berdekatan, dinding untuk yang baru ini akan berada di kolom yang sama dengan dinding dari yang terakhir.

    m(1:b,x)='|';

Periksa untuk melihat apakah ini bangunan setengah tinggi. Jika ya, maka atapnya akan berbeda. Untuk setengah ketinggian, atap akan menjadi yang / \tinggi penuh ___(Matlab akan secara implisit mereplikasi ini dari satu garis bawah, jadi simpan beberapa byte di sana). Ada sedikit atap tambahan satu baris lebih tinggi untuk bangunan setengah tinggi, sehingga ditambahkan juga.

    s=95;
    if a~=b;
        m(b+2,x+2)=95;
        s='/ \';
    end;

Gambarlah di atap

    m(b+1,x+(1:3))=s;

Sekarang pindah ke awal bangunan berikutnya dan menggambar di dinding bersama (jika dinding terlalu pendek pada titik ini, itu akan dibuat lebih besar ketika bangunan berikutnya ditarik). Perhatikan bahwa nol tinggi bangunan adalah 1 lebar, bangunan normal adalah 4 lebar, jadi kami menyederhanakan apa yang akan menjadi if-else dengan memperlakukan (a> 0) sebagai angka desimal bukan Boolean.

    x=x+(a>0)*3+1;
    m(1:b,x)='|';

Selanjutnya muncul sedikit peretasan untuk bekerja dengan bangunan tinggi nol. Pada dasarnya apa yang dikatakan adalah jika bangunan ini tingginya nol, dan yang sebelumnya tidak, itu berarti tempat bangunan berikutnya perlu bertambah 1 karena bangunan nol tinggi yang terjepit di antara dua bangunan lain secara efektif dua kali lebarnya - ini menyumbang tembok ekstra yang biasanya dibagi dengan bangunan yang berdekatan. Kami juga melacak ketinggian gedung ini untuk melakukan pemeriksaan ini lain kali.

    x=x+(a<1&c>0);
    c=a;
end;

Setelah selesai, balikkan matriks bangunan menjadi jalan yang benar, dan tampilkan. Perhatikan bahwa kami juga memotong kelebihan tanah di sini juga.

disp(flipud(m(:,1:x-(a<1))))

Jadi, ketika kita menjalankan skrip ini, kita diminta masukan kita, misalnya:

[0 0 2 1 3.5 0 4 2 4 2 4 6 1 6 0 5 1 0 0 1 0]

Kemudian menghasilkan bangunan dan menampilkan hasilnya. Untuk input di atas, berikut ini dihasilkan:

                                     ___     ___                   
                                    |   |   |   |  ___             
            _    ___     ___     ___|   |   |   | |   |            
           / \  |   |   |   |   |   |   |   |   | |   |            
   ___    |   | |   |___|   |___|   |   |   |   | |   |            
  |   |___|   | |   |   |   |   |   |   |___|   | |   |___    ___  
__|___|___|___|_|___|___|___|___|___|___|___|___|_|___|___|__|___|_

Bagus sekali!
Stewie Griffin

4

Kotlin, 447 442 byte

val a={s:String->val f=s.split(" ").map{it.toFloat()}.toFloatArray();val m=(f.max()!!+1).toInt();for(d in m downTo 0){var l=0f;for(c in f){val h=c.toInt();print(if(h==d&&d!=0)if(h<l-0.5)"|" else{" "}+if(c>h)"/ \\" else "___" else if(h<d)if(d<l-0.5)"|" else{" "}+if(h==0)" " else if((c+0.5).toInt()==d)" _ " else "   " else{if(h==0)if(l<1)"  " else "| " else "|   "}.replace(' ',if(d==0)'_' else ' '));l=c;};if(d<l-0.5)print("|");println();}}

Versi tidak disatukan:

val ungolfed: (String) -> Unit = {
    s ->

    val floats = s.split(" ").map { it.toFloat() }.toFloatArray()
    val maxH = (floats.max()!! + 1).toInt()

    for (drawHeight in maxH downTo 0) {
        var lastBuildingH = 0f
        for (f in floats) {
            val buildingH = f.toInt()
            if (drawHeight == 0) {
                // Baseline
                if (buildingH == 0)
                    if (lastBuildingH.toInt() == 0) print("__")
                    else print("|_")
                else print("|___")
            } else if (buildingH == drawHeight) {
                // Ceiling
                if (buildingH < lastBuildingH - 0.5) print("|")
                else print(" ")
                if (f > buildingH) print("/ \\")
                else print("___")
            } else if (buildingH < drawHeight) {
                // Above building
                if (drawHeight < lastBuildingH - 0.5) print("|")
                else print(" ")
                if (buildingH == 0) print(" ")
                else {
                    if ((f + 0.5).toInt() == drawHeight) print(" _ ")
                    else print("   ")
                }
            } else {
                if (buildingH == 0) print("| ")
                else print("|   ")
            }
            lastBuildingH = f;
        }
        if (drawHeight < lastBuildingH - 0.5) print("|")
        println()
    }
}

3

Python 2, 357 306 299 294 287 281 276 byte

def s(l):
 d=len(l)+1;l=[0]+l+[0];h=(max(l)+3)/2;o=''
 for i in range(d*h):
  a=l[i%d+1];c=l[i%d];b=2*(h-1-i/d);o+="|"if(a>b+1)+(c>b+1)else" "*(a+c>0);o+=" _/__  _\\"[a-b+1::3]if b*(1>=abs(a-b))else" "*(1+2*(a>0))
  if b==0:o=o.replace(" ","_")
  if i%d==d-1:print o[:-1];o=''

Ini menggunakan pengkodean "dua kali lipat", untuk diteruskan ke fungsi sebagai daftar. Sunting: Dicukur byte dengan mengulangi bagian dari kondisional besar sebagai pemilih array, dan beralih ke pengkodean berlipat ganda. Mencukur lebih banyak byte dengan menata ulang kondisi bersyarat lebih banyak dan mengubah lebih banyak logika ke aritmatika.

EDIT: xsot lebih baik

Penjelasan:

d=len(l)+1;l=[0]+l+[0];m=max(l);h=m/2+m%2+1;o=''

dadalah 1 lebih dari panjang array, karena kita akan menambahkan nol di setiap ujung daftar dari elemen kedua hingga nol yang kita tambahkan di akhir. hadalah ketinggian gambar. (Kita harus membaginya dengan 2 dalam perhitungan ini karena kita menggunakan representasi dua kali lipat, yang kita gunakan secara khusus untuk menghindari keharusan melemparkan pelampung ke int di semua tempat. Kami juga menambahkan 1 sebelum membagi ketinggian yang sangat aneh - bangunan runcing - dapatkan sedikit lebih banyak clearance daripada yang biasa.) oadalah string keluaran.

 for i in range(d*h):

Trik standar untuk menciutkan loop ganda untuk menjadi loop tunggal. Setelah kami melakukannya:

  a=l[i%d+1];c=l[i%d];b=2*(h-1-i/d)

kita sekarang telah mencapai hal yang sama seperti:

for b in range(2*h-2,-2,-2):
 for j in range(d):
  a=l[j+1];c=l[j]

tetapi dengan cara yang menjaring kami sepuluh byte disimpan (termasuk spasi pada baris berikut).

  o+="|"if(a>b+1)+(c>b+1)else" "*(a+c>0)

Tempelkan dinding kapan saja ketinggian bangunan saat ini atau bangunan sebelumnya lebih tinggi dari garis saat ini, selama setidaknya ada satu batas bangunan di sini. Ini sama dengan persyaratan berikut:

  o+=("|" if a>b+1 or c>b+1 else " ") if a or c else ""

di mana b adalah tinggi pindai saat ini, a adalah tinggi bangunan saat ini, dan c adalah tinggi bangunan sebelumnya. Bagian terakhir dari kondisi mencegah penempatan dinding di antara ruang-ruang tanah.

  o+=" _/__  _\\"[a-b+1::3]if b*(1>=abs(a-b))else" "*(1+2*(a>0))

Ini adalah bagian yang menggambar atap yang benar, memilih bagian-bagian atap dengan membandingkan ketinggian bangunan dengan ketinggian pindai saat ini. Jika atap tidak masuk ke sini, ia mencetak jumlah ruang yang sesuai (3 ketika itu adalah bangunan sebenarnya, misalnya a> 0, jika tidak 1). Perhatikan bahwa ketika kita berada di permukaan tanah, itu tidak pernah mencoba untuk menggambar atap, yang berarti bangunan berukuran 0,5 tidak mendapatkan atap runcing. Baiklah.

  if b==0:o=o.replace(" ","_")

Ketika kita berada di permukaan tanah, kita ingin menggarisbawahi bukan spasi. Kami hanya mengganti semuanya sekaligus di sini.

  if i%d==d-1:print o[:-1];o=''

Tepat sebelum kita mulai memproses baris berikutnya, cetak baris saat ini dan hapus jalur output. Kami memangkas karakter terakhir karena itu adalah "_" yang sesuai dengan ruang dasar yang kita tambahkan dengan menambahkan nol di awal fungsi. (Kami menambahkan nol sehingga kami tidak perlu menambahkan case khusus untuk memasukkan dinding kanan, jika ada, yang akan menambahkan kode jauh lebih banyak daripada yang kami tambahkan dengan menambahkan 0 dan memotong "_".)


Golf-mobil. Wow. (Juga, +1)
bertepuk tangan

2

Python 3

725 byte

608 byte

Kode golf:

import sys,math;
m,l,w,s,bh,ls,ins,r,a="|   |","___","|"," ",0,[],[],range,sys.argv[1:]
def ru(n):return math.ceil(n)
def bl(h,n):
    if(n>ru(h)):return(s*5,s)[h==0]
    if(h==0):return"_"
    if(n==0):return w+l+w
    if(n<h-1):return m
    return("  _  "," / \ ")[n==ru(h)-1]if(h%1)else(s+l+s,m)[n==h-1]
for arg in a:
    f=ru(float(arg))
    if(bh<f):bh=f
for i in r(bh,-1,-1):
    ln=""
    for bld in a:ln+=bl(float(bld),i)
    ls.append(ln)
for i in r(len(ls[-1])-1):
    if(ls[-1][i]==ls[-1][i+1]==w):ins.append(i-len(ins))
for ln in ls:
    for i in ins:ln=(ln[:i]+ln[i+1:],ln[:i+1]+ln[i+2:])[ln[i]==w]
    print(ln)

Ini kode yang tidak disunat. Ada beberapa komentar tetapi ide dasarnya adalah membuat bangunan dengan dinding ganda, jadi intinya terlihat seperti:

_|___||___|_|___||___|

Kemudian untuk mendapatkan indeks dinding ganda itu dan menghapus kolom-kolom itu sehingga kita mendapatkan:

_|___|___|_|___|___|

Kode:

import sys
import numbers
import math

mid="|   |";
l="___";
w="|";
s=" ";

def printList(lst):
    for it in lst:
        print(it);

# h = height of building
# l = line numeber starting at 0
def buildingline(h,n):
    #if (h==0):
    #   return " " if(n>math.ceil(h)) else "   ";
    if(n>math.ceil(h)):
        return s if(h == 0) else s*5;
    if(h==0): return "_";
    if(n==0): return w+l+w;
    if(n<h-1): return mid;
    if(h.is_integer()):
        return mid if(n==h-1) else  s+l+s;
    else:
        return " / \ " if (n==math.ceil(h)-1) else "  _  "; 
# max height
bh=0;

for arg in sys.argv[1:]:
    f = math.ceil(float(arg));
    if(bh<f):bh=f;

# lines for printing
lines = []

for i in range(bh,-1,-1):
    line="";
    for bld in sys.argv[1:]:
        bld=float(bld);
        line += buildingline(bld,i);
        #lh = bld;
    lines.append(line);

#for line in lines:
#   print(line);
#printList(lines);


# column merging
#find indexes for merging (if there are | | next to each other)
indexes = [];
for i in range(len(lines[-1])-1):
    if (lines[-1][i]=='|' and lines[-1][i+1] == '|'):
        indexes.append(i-len(indexes));

#printList(indexes);

#index counter
for line in lines:
    newLine = line;
    for i in indexes:
        if newLine[i] == '|' :
            newLine=newLine[:i+1] + newLine[i+2:];
        else : newLine = newLine[:i] + newLine[i+1:];
    print(newLine);

Waktunya bermain golf!


Anda mungkin ingin melihatnya di sini . Saya pikir ada banyak potensi bermain golf di sini =) Saya hanya tahu Python dasar, jadi saya tidak bisa menyarankan sesuatu yang spesifik saya khawatir ...
Stewie Griffin

Sepertinya saya telah menghapus spasi dan memperpendek nama variabel, tetapi tidak mengubah sisanya. Anda harus mencoba menemukan cara-cara cerdas untuk menghilangkan beberapa loop, menggunakan lebih sedikit perbandingan dll. Tentu saja, hal-hal seperti ru(n):return math.ceil(n)hitungan sebagai golf, tapi tetap saja ... Tolong jangan menganggap ini dengan cara negatif, saya bukan seorang pegolf yang baik, dan tentu saja bukan programmer yang baik. Saya sarankan Anda mencoba untuk memperbaikinya ... Ini benar-benar menyenangkan setelah Anda menyadari bahwa Anda berhasil mempersingkatnya. Saya beralih dari banyak ke 120 menjadi 55 beberapa hari yang lalu. Jadi itu mungkin bahkan jika Anda baru dalam hal itu.
Stewie Griffin

@StewieGriffin Terima kasih atas tautannya! Saya benar-benar seorang pemula untuk kode-golf sehingga lebih tentang menyelesaikan tugas yang sebenarnya daripada melakukan kode-golf untuk saya. Tapi itu luar biasa untuk menemukan kemungkinan berbagai bahasa
Cajova_Houba

FTR: Untuk beberapa tantangan yang lebih kompleks, seperti yang ini, saya akan senang hanya menyelesaikannya sendiri =)
Stewie Griffin

2

PHP, 307 297 293 byte

<?$r=str_pad("",$p=((max($argv)+1)>>1)*$w=4*$argc,str_pad("\n",$w," ",0));for(;++$i<$argc&&$r[$p++]=_;$m=$n)if($n=$argv[$i]){$q=$p+=!$m;eval($x='$r[$q-1]=$r[$q]=$r[$q+1]=_;');for($h=$n>>1;$h--;$q-=$w)$r[$q-2]=$r[$q+2]="|";$n&1?($r[$q-1]="/")&($r[$q-$w]=_)&$r[$q+1]="\\":eval($x);$p+=3;}echo$r;

Membawa argumen * 2 dari baris perintah. simpan ke file, jalankan dengan php <filename> <parameters>.

kerusakan

// initialize result    
$r=str_pad("",              // nested str_pad is 3 bytes shorter than a loop
    $p=                     // cursor=(max height-1)*(max width)=(start of last line)
    ((max($argv)+1)>>1)     // max height-1
    *
    $w=4*$argc              // we need at least 4*($argc-1)-1, +1 for newline
    ,
    // one line
    str_pad("\n",$w," ",0)  // (`str_pad("",$w-1)."\n"` is one byte shorter,
);                          // but requires `$w+1`)

// draw skyline
for(;
    ++$i<$argc              // loop through arguments
    &&$r[$p++]=_                // 0. draw empty ground and go one forward
    ;
    $m=$n                       // 7. remember value
)
    if($n=$argv[$i])            // if there is a house
    {
        $q=                         // 2. copy $p to $q
        $p+=!$m;                    // 1. go one forward if there was no house before this
        // offset all further positions by -2 (overwrite empty ground, share walls)
        eval($x=                    // 3. draw floor
        '$r[$q-1]=$r[$q]=$r[$q+1]=_;'
        );
        for($h=$n>>1;$h--;$q-=$w)   // 4. draw walls
            $r[$q-2]=$r[$q+2]="|";
        $n&1                        // 5. draw roof
            ?($r[$q-1]="/")&($r[$q-$w]=_)&$r[$q+1]="\\"
            :eval($x)               // (eval saved 7 bytes)
        ;                           // (ternary saved 6 bytes over `if`)
        $p+=3;                      // 6. go three forward (5-2)
    }

// output
echo$r;

1

C ++, tidak diserang

(atau mungkin ungolfable)

Dengan asumsi ada kurang dari 100 elemen dan setiap elemen kurang dari 100. sadalah jumlah bangunan (diperlukan dalam input).

#include <iostream>
using namespace std;
int main()
{
float a[100];
int i,j,s;
cin>>s;
for(i=0;i<s;++i)
 cin>>a[i];
for(i=100;i>=1;--i)
{
for(j=0;j<s;++j)
{
if((a[j]>=i)||(a[j-1]>=i))
 cout<<"|";
else
 cout<<" ";
if(i==1)
 cout<<"___";
else if(a[j]+1==i)
 cout<<"___";
else if(a[j]+1.5==i)
 cout<<" _ ";
else if(a[j]+0.5==i)
 cout<<"/ \\";
else cout<<"   ";
}
if(a[s-1]>=i)
 cout<<"|";
cout<<endl;
}
}

Ada beberapa kesalahan dalam output ... Luas tanah adalah 3 karakter (seharusnya hanya 1), dan dinding terakhir tidak ada.
Stewie Griffin

@StewieGriffin Saya masih memilah kesalahan ketika saya memposting ini. 1. Saya telah menambahkan tembok terakhir. 2. Tanah harus lebar 3 karakter, karena atap miring / _ \ adalah lebar 3 karakter.
ghosts_in_the_code

1
* Tanah di antara bangunan, bukan di dalam.
Stewie Griffin

Jika Anda masih mengerjakannya, Anda mungkin ingin menunggu, tetapi Anda dapat menyingkirkan banyak byte jika Anda menghapus baris baru dan lekukan. Saya belum memperbaiki masalah tanah, tetapi ini berhasil 0,346 byte, bukan 401.
Stewie Griffin

@StewieGriffin Saya sebenarnya tidak berniat untuk mengirim jawaban golf karena terlalu lama. Saya berani bertaruh ada bahasa yang lebih baik di mana itu dilakukan di bawah 100 byte. Jadi kode saya lebih merupakan solusi referensi untuk orang lain.
ghosts_in_the_code
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.