In cho tôi một khối tháp


16

In một khối tháp với mã ngắn nhất có thể.

Đầu vào:

Đầu vào xác định khối tháp có bao nhiêu tầng. Một tầng chứa một cửa sổ ở hai bên cửa. Cửa sổ được tạo thành từ băm 3x3.

Một ví dụ về khối tháp 4 tầng bên dưới:

      =====================
      )V V V V V V V V V V(
     )V V V V V V V V V V V(
    )V V V V V V V V V V V V(
   )V V V V V V V V V V V V V(
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : : : : : : : : : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : ### : : : : : : ### : :
   : : : : : : : : : : : : : :
   : : : : : _______ : : : : :
   : : ### : I     I : ### : :
   : : ### : I     I : ### : :
   : : ### : I     I : ### : :
   : : : : : I     I : : : : :

Cập nhật:

Đầu vào phải là một hoặc lớn hơn.

Không gian lưu trữ ở cuối dòng được cho phép.

Trong ví dụ của tôi, mỗi dòng có ba khoảng trắng hàng đầu. Điều này không bắt buộc, chỉ có khối tháp với đầu vào là.


2
Đầu vào có thể nhỏ hơn 1 không?
nmjcman101

2
Là dấu cách ở cuối dòng được phép?
ngenisis

Cảm ơn câu hỏi của bạn - xin vui lòng xem cập nhật trong câu hỏi của tôi.
Tháp chuông

Câu trả lời:


6

V , 72 byte

13iV r(É)3ñįlxñÄ21r=GÙÒ~Ù14R: ÙÄ2w3r#7w.3ÄkdGÀpG4k5w7r_bêojrIÎfIl5r 

Hãy thử trực tuyến!

Đây là một hexdump, vì cái này chứa các ký tự không thể in được:

00000000: 3133 6956 201b 7228 c929 33f1 c4af 6c78  13iV .r(.)3...lx
00000010: f1c4 3231 723d 47d9 d27e d931 3452 3a20  ..21r=G..~.14R: 
00000020: 1bd9 c432 7733 7223 3777 2e33 c46b 6447  ...2w3r#7w.3.kdG
00000030: c070 4734 6b35 7737 725f 1662 ea6f 6a72  .pG4k5w7r_.b.ojr
00000040: 49ce 6649 6c35 7220                      I.fIl5r

Tôi gặp phải một lỗi lạ. Phần ở giữa: đáng dGÀpGlẽ phải là : ÀäGG, nhưng điều này không hoạt động cho đầu vào của 1 và tôi không biết tại sao.¯\_(ツ)_/¯


8

Toán học, 301 288 258 byte

" "~(s=If[#2==0,"",#~StringRepeat~#2]&)~3<>{"="~s~21,"
",s[" ",12-#]<>{")","v "~s~#,"v(
"}&/@9~Range~12,"~"~s~27,"
",s[(x=(u=": ")~s~13<>":
")<>{y=u<>{z=": ### ",v=u~s~5,w=z<>": :
"},y,y,x},#-1],v,"_"~s~7," ",v,"
",m=u<>{z,u,n="I     I ",w},m,m,v,n,w}&

Hàm thuần túy lấy một số nguyên dương và đưa ra một chuỗi. Chuỗi đầu ra sẽ không phù hợp vì Mathicala rõ ràng không hiển thị phông chữ đơn cách dưới dạng đơn cách:

nhập mô tả hình ảnh ở đây

Vì những lý do tôi không hiểu lắm, nó có định dạng là không gian đơn nếu bạn Printlà chuỗi:

nhập mô tả hình ảnh ở đây

Chỉnh sửa: Đã lưu một vài byte bằng cách không bao gồm " "ở đầu mỗi dòng. Đã thay đổi định nghĩa sđể xử lý trường hợp chỉ có một tầng ( StringRepeatkhông giống như lặp lại chuỗi 0lần).

Chỉnh sửa 2: Nhờ LegionMammal978 và thực tế StringJoinListable, đây hiện là cơn ác mộng khó hiểu của các danh sách lồng nhau và cũng ngắn hơn 30 byte.


1
Ít nhất 26 byte có thể được lưu bằng cách thay thế a<>b<>...<>xbằng a<>{b,...,x}một số phần nhất định.
LegionMammal978

4

Python 2 , 275 270 262 246 240 236 byte

Đã lưu một cặp vợ chồng với một gợi ý từ @ Flp.Tkc và bằng cách thay đổi vòng lặp đầu tiên.

16 được lưu với sự trợ giúp nhiều hơn từ @ Flp.Tkc

a,h,b,c,w=' ',"I  ",": "," :","#"*3;d,e,j=b*2+w+a+b+h,b*5+h,[b*14]
print'\n'.join([a*3+'='*21]+[a*(4-x)+')'+'V '*(x+8)+'V('for x in 1,2,3,4]+['-'*27]+(j+[b*2+w+c*6+a+w+c*2]*3+j)*(input()-1)+[b*5+"_"*7+c*5]+[d+a+d[::-1]]*3+[e+a+e[::-1]])

Hãy thử trực tuyến!

Chỉ cần xây dựng mỗi dòng của tháp thành một chuỗi và thêm nó vào một mảng chúng sẽ in mảng ở cuối. Nếu bất cứ ai muốn một lời giải thích đầy đủ, tôi sẽ miễn cưỡng đưa ra nếu tôi có thể nhớ nó hoạt động như thế nào


3

PowerShell , 193 byte

"   "+"="*21
3..0|%{" "*$_+")"+"V "*(12-$_)+"V("}
"~"*27
--$args[0]..0|%{($b=": "*5)+(($a=": "*4),'_______ ')[!$_]+$b;,(': : ### : '+($a,($c='I     I '))[!$_]+': ### : :')*3;$b+($a,$c)[!$_]+$b}

Hãy thử trực tuyến!

(Tôi cảm thấy vẫn có thể có một vài byte ở đây hoặc ở đó. Sub-190 dường như có thể thực hiện được.)

Ba dòng đầu tiên tạo thành mái nhà, sử dụng phép nhân và nối chuỗi, cùng với một vòng lặp 3..0|%{...}để có được số và độ dốc chính xác của Vs.

Dòng tiếp theo chạy từ đầu vào giảm --$args[0]xuống thành 0một vòng lặp (giảm trước cho phép chúng ta lập chỉ mục sử dụng !$_thay vì $_-eq1lưu một vài byte sau). Mỗi lần lặp lại, chúng tôi đang xây dựng một chuỗi các chuỗi, đặt các biến $b$atrên đường đi. Chúng tôi cũng đang sử dụng giả ba chiều (... , ...)[...]để chọn các chuỗi thích hợp cho giữa để chúng tôi có thể có được các ô cửa ở tầng đầu tiên.

Mỗi chuỗi được để riêng trên đường ống và mặc định Write-Outputchèn các dòng mới vào giữa, vì vậy chúng tôi nhận được các chuỗi miễn phí.


3

T-SQL, 378 372 353 331 325 byte

Chơi gôn

DECLARE @ INT=3

,@h varchar(max)=REPLICATE('~',27)SELECT @h+='
: '+a+IIF(n>@*5-6,IIF(n%5=0,'_______ ','I     I '),t)+a+':'FROM(SELECT
IIF(n%5%4=0,t,': ### : ')a,*FROM(SELECT': : : : 't,number n,*FROM spt_values)x)y
WHERE type='P'and n<@*5SET @=0WHILE @<4SELECT
@h=SPACE(@)+')'+REPLICATE('V ',12-@)+'V(
'+@h,@+=1PRINT'   '+REPLICATE('=',21)+'
'+@h

Ung dung:

DECLARE @ INT=3

,@h varchar(max)=REPLICATE('~',27)
SELECT @h+='
: '+a+IIF(n>@*5-6,IIF(n%5=0,'_______ ','I     I '),t)+a+':'
FROM
(SELECT IIF(n%5%4=0,t,': ### : ')a,*
FROM
(SELECT': : : : 't,number n,*
FROM spt_values)x)y
WHERE type='P'and n<@*5
WHILE @>=0
  SELECT @h=SPACE(3-@)+')'+REPLICATE('V ',9+@)+'V(
'+@h,@-=1
PRINT'   '+REPLICATE('=',21)+'
'+@h

Dùng thử


2

C, 409 406 402 byte

#define P(x)p(": ",x);
#define S(x)p(x,1);
#define L P(2)p("#",3);p(" :",6);S(" ###");S(" : :\n")
#define Q p("V ",i+++9)
p(s,n)char*s;{printf(s,--n?p(s,n):0);}i;t(n){p(" ",3);p("=",21);S("\n   )")Q;S("V(\n  )")Q;S("V(\n )")Q;S("V(\n)")Q;S("V(\n")p("~",27);S("\n")for(;--n;){P(13)S(":\n")L;L;L;P(13)S(":\n")}P(5)p("_",7);p(" :",5);S("\n")p(": : ### : I     I : ### : :\n",3);P(5)S("I     I")p(" :",5);}

Gọi với:

int main()
{
    t(4);
}

1

Mẻ, 373 byte

@echo off
set s=###
echo    %s:#========%
for %%s in ("   )" "  )V " " )V V " ")V V V ")do echo %%~sV%s:#= V V V%(
echo %s:#=~~~~~~~~~%
set t=: : ### : I     I : ### : :
set s=%t:I     I=: : : :%
for /l %i in (2,1,%1)do echo %s:###=: :%&echo %s%&echo %s%&echo %s%&echo %s:###=: :%
set s=%t:###=: :%
echo %s:I     I=_______%
echo %t%
echo %t%
echo %t%
echo %s%

Xây dựng sườn núi và máng xối bằng cách nhận thấy rằng chúng là bội số của 3, loại bỏ một vài byte. Xây dựng mái nhà bằng cách nhận thấy rằng hậu tố là giống nhau cho mỗi dòng (và một lần nữa bao gồm một số lặp lại ba lần). Xây dựng các bức tường bằng cách bắt đầu với dòng tường thú vị nhất, đó là cửa sổ tầng trệt và loại bỏ các chi tiết để tạo ra các phần khác của bức tường.


1

Javascript, 335 byte

y=z=>{a="   "+"=".repeat(21);for(b=9;13>b;b++)a+="\n"+" ".repeat(12-b)+")"+"V ".repeat(b)+"V(";a+="\n"+"~".repeat(27);b="\n"+": ".repeat(14);c=": : ### : : : : : : ### : :";for(d=0;d<z-1;d++)a+=b+"\n"+c+"\n"+c+b;a+="\n: : : : : _______ : : : :\n"+": : ### : I     I : ### : :\n".repeat(3)+": : : : : I     I : : : : :";console.log(a)};

Tạo một hàm y()với đối số z, sao cho y(z)tạo ra đầu ra mong muốn.

Cách sử dụng ví dụ:

y=z=>{a="   "+"=".repeat(21);for(b=9;13>b;b++)a+="\n"+" ".repeat(12-b)+")"+"V ".repeat(b)+"V(";a+="\n"+"~".repeat(27);b="\n"+": ".repeat(14);c=": : ### : : : : : : ### : :";for(d=0;d<z-1;d++)a+=b+"\n"+c+"\n"+c+b;a+="\n: : : : : _______ : : : :\n"+": : ### : I     I : ### : :\n".repeat(3)+": : : : : I     I : : : : :";console.log(a)};

console.log(y(3));

Tôi đang chuyển từ JavaScript bình thường sang mã golf-golf. Bất kỳ lời khuyên sẽ được đánh giá rất cao.


1

Canvas , 62 61 byte

⁶=⁵×V7× * )×4*∔/‾²m~7«× ×∔│8 ×:*5*#33*62╋│⁸*∔l4-_7× 5×Ie4*∔╋╋

Hãy thử nó ở đây! Đầu vào 0 hoạt động như mong đợi mặc dù điều đó không bắt buộc.


này, chiều cao của ngôi nhà được sửa đổi bằng cách sử dụng tập lệnh này như thế nào?
t-clausen.dk

Đôi mắt cũ của tôi đã bỏ lỡ số ở ô bên phải
t-clausen.dk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.