วาดเครื่องหมายแลมบ์ดา


16

เพื่อเฉลิมฉลองวันครบรอบปีที่ 2497 ของชัยชนะกรีกที่ Salamis ใน 480 ปีก่อนคริสตกาล วาดเครื่องหมายแลมบ์ดา

แลมบ์ดาป่าวคือแลมบ์ดาทาสีบนแผงกั้นกรีกเช่นนั้น:

images of red capital lambda on circular white and gold shield backgrounds

ปริศนา:ได้รับจำนวนเต็มคี่บวก, สร้างภาพศิลปะ ASCII ของโล่ด้านบน

ข้อมูลจำเพาะ:

n = 1:

( /\ )

n = 3:

(   /\   )
|  /  \  | 
( /    \ )

n = 5

(     /\     )
|    /  \    |
|   /    \   |
|  /      \  |
( /        \ )

กราฟ: n = 3

          2|   (   /\   )
y-axis    1|   |  /  \  | 
          0|   ( /    \ )
               ___________  
               0123456789

                 x-axis

รายละเอียด:

ควรมีn \ตัวและn /ตัว /และ\ไม่ควรสัมผัสขอบของโล่ ด้านล่างและด้านบนมุมของโล่จะถูกระบุด้วย(หรือ)เว้นแต่n = 1 ที่จะมีหนึ่งและเป็นหนึ่งใน) (ก็จะเป็นหนึ่งในช่องว่างระหว่างมุมด้านล่างและแลมบ์ดาเพิ่มขึ้น 1 กับแกน Y y + 1 == nจนกว่า |มุมที่ไม่ใช่ด้านโล่จะถูกแสดงด้วย ไม่มีเกราะป้องกัน


7
ทำไมต้องลงคะแนน (อีก 2 ไป)
user202729

3
@ user202729 คุณหมายถึงอะไรอีก 2 ไป?
jacksonecac

4
SE มีข้อ จำกัด อักขระความคิดเห็นซึ่งบังคับให้ข้อคิดเห็นมีอย่างน้อย 15 อักขระ
user202729

7
ทำไมคุณไม่รอ 3 ปีเพื่อโพสต์เพื่อฉลองครบรอบ 2.5k'th; -;
HyperNeutrino

5
ทำไมจำนวนเต็มคี่เท่านั้น? : o
Felix Palmen

คำตอบ:


8

ถ่าน ,  17  13 ไบต์

ขอบคุณ @Neil สำหรับการบันทึก 4 ไบต์!

(↙↓⊖θM↑(→↗N‖M

ลองออนไลน์!

คำอธิบาย:

(↙                // Print '(' and move one step down and to the left.
  ↓⊖θ             // Print n-1 '|'s downwards.
     M↑          // Move one step up.
        (→        // Print '(' and move one step to the right.
          ↗N      // Print n '/'s towards the upper right corner.
            ‖M    // Mirror the left half to produce the right half.

1
ช่วยให้คุณประหยัดไบต์และครึ่งหนึ่งของคุณไม่จำเป็น
Neil

1
นอกจากนี้คุณIθสามารถบันทึกไบต์อื่นได้
Neil

สรุปคำแนะนำของ Neil ขนาด 13 ไบต์
Mr. Xcoder

@ Mr.Xcoder ขอบคุณ แต่ฉันได้ทำสิ่งเหล่านี้แล้ว
Steadybox

มันเล็ก แต่ฉันเชื่อว่าคำอธิบายของคุณ(→ควรหมายถึง "... และก้าวหนึ่งก้าวไปทางขวา "
Kamil Drakari

6

SOGL V0.12 , 17 14 ไบต์

┐*ƨ(Κm«@.╚┼┼╬³

ลองที่นี่!

คำอธิบาย:

example input: 3
┐*              push a string of input amount of "|"                      "|||"
  ƨ(            push "("                                                  "|||", "(("
    Κ           prepend that to the vertical bar string                   "((|||"
     m          mold that string as the input (remove excess characters)  "((|"
      «         put the first character at the end                        "(|("
       @        push a space                                              "(|(", " "
        .╚      create a diagonal of input length                         "(|(", " ", ["  /", " / ", "/  "]
          ┼┼    append those three horizontally together                  ["(   /", "|  / ", "( /  "]
            ╬³  palindromize that all                                     

4

C (gcc) , 103 96 ไบต์

  • ที่บันทึกไว้เจ็ดไบต์ขอบคุณที่ceilingcat
f(n,j,b){for(j=n;j--;printf("%c%*c%*c%*c\n","|("[b],j+2,47,n+n-j+~j,92,j+2,"|)"[b=j<1|n-2<j]));}

ลองออนไลน์!


เราแก้ตัวหลักและรวมตอนนี้หรือไม่ ชุมชนนี้มีการเปลี่ยนแปลง
Alec Teal

2
@AlecTeal เป็นที่ยอมรับได้ในการเขียนฟังก์ชั่นที่ทำงานที่ระบุมากกว่าที่จะเป็นโปรแกรมแบบเต็ม โดยทั่วไปจะนับรวมไปถึงจำนวนไบต์คอมไพเลอร์ C บางตัวพยายามที่จะคาดเดาคำจำกัดความของฟังก์ชันถ้าไม่มีการรวมที่ตรงกัน
Jonathan Frech

คิดว่าคุณผิดจำนวนหัวหน้า
Veskah

@Veskah True ._
Jonathan Frech

3

เรติน่า 41 ไบต์

.+
$* 
 
( $'/$`$`\$' )¶
G`.
sT`()`|`¶.*¶

ลองออนไลน์! คำอธิบาย:

.+
$* 

แปลงเป็น unary แต่ใช้ช่องว่าง

 
( $'/$`$`\$' )¶

ใช้คำนำหน้าการจับคู่และตัวดำเนินการต่อท้ายเพื่อสร้างชุดของบรรทัดที่มีจำนวนของพื้นที่ศูนย์ที่เพิ่มขึ้นในแต่ละบรรทัด

G`.

อย่างไรก็ตามมีบรรทัดว่างพิเศษซึ่งจะปิดการทับศัพท์สุดท้ายดังนั้นให้ลบที่นี่

sT`()`|`¶.*¶

ในทุกบรรทัดยกเว้นบรรทัดแรกและบรรทัดสุดท้ายเปลี่ยน()s เป็น|s







2

รุ่นที่ 218 ไบต์

@echo off
set s=
for /l %%i in (1,1,%1)do call set s= %%s%%
set s=%s%/\%s%
echo (%s%)
for /l %%i in (2,1,%1)do call:l %1 %%i
exit/b
:l
set s=%s: /=/ %
set s=%s:\ = \%
if %1==%2 (echo ^(%s%^))else echo ^|%s%^|

ถ้าเป็น|ของไม่ดีพอ()ที่จะไม่ทำงานได้ดีกับ...ifelse


2

05ab1e (27 ไบต์)

F"|("0NQ¹<NQ~èð¹N-×'/ðN×J∞,

ลองออนไลน์

คำอธิบาย

F                                                #Loop n times        
 |("0NQ¹<NQ~è                                    #Use ( or |        
             ð¹N-×                               #put spaces (1)        
                  '/                             #put /                
                    ðN×                          #put more space                
                       J∞,                       #reverse image        

ผมคิดว่าเป็นไบต์สั้นกว่า'/¹N-ú ð¹N-×'/
Neil

เป็นวิธีที่ดี แต่มีบางสิ่งให้เล่นกอล์ฟ หนึ่งคือสิ่งที่@Neilแนะนำไว้ข้างต้น นอกจาก: "|("สามารถ„|((มี builtins 1, 2 และสาย 3 ถ่านเป็น', และตามลำดับ); และ0NQ¹<NQ~สามารถเป็นได้΂Nåè( Îดูเหมือนจะบั๊กใน TIO รุ่นเก่า แต่ทำงานได้ในรุ่นล่าสุดของ 05AB1E ซึ่งในกรณีนี้คุณจะต้องแทนที่ด้วยº) ดังนั้นในการรวม ( 21 ไบต์ ): ลองออนไลน์F„|(΂Nåè'/¹N-úðN×Jº,
Kevin Cruijssen


1

Python 2 , 90 ไบต์

n=input()
for i in range(n):m=-~i%n<2;s=' '*(n-i);print'|('[m]+s+'/'+'  '*i+'\\'+s+'|)'[m]

ลองออนไลน์!

-1 ขอบคุณที่OVS


ล้มเหลวสำหรับn=1แต่สามารถแก้ไขได้โดยแทนที่i%~-n<1ด้วย-~i%n<2
ร็อด

@Rod ขอบคุณคง
Erik the Outgolfer

90 ไบต์ : '<space>'*i*2->'<space><space>'*i
ovs

@ovs @ _ @ เหตุใดฉันจึงไม่คิดอย่างนั้น
Erik the Outgolfer

1

C # (. NET Core) , 188 ไบต์

n=>{int y=0,i=-1;var s="";while(y<n){var r=new char[n*2+4];r[n+1-y]='/';r[n+2+y]='\\';if(y<2|y++>n-2)i++;r[0]="(|("[i];r[n*2+3]=")|)"[i];s+=new string(r)+"\n";}return s.Replace("\0"," ");}

ลองออนไลน์!

Degolfed

n=>{
    int y=0,i=-1;
    var s="";

    while(y<n){
        var r=new char[n*2+4];
        r[n+1-y]='/';
        r[n+2+y]='\\';

        if(y<2 | y++>n-2)
            i++;

        r[0] = "(|("[i];
        r[n*2+3] = ")|)"[i];

        s += new string(r)+"\n";
    }

    return s.Replace("\0"," ");
}


1

PowerShell , 93 91 90 89 ไบต์

-2 ขอบคุณ ASCII-only สำหรับการชี้ให้เห็น parens พิเศษ
-1 ขอบคุณ Mazzy สำหรับการปรับเปลี่ยนตรรกะ

param($n)0..--$n|%{"|("[!($x=($n-$_)*$_)]+($y=" "*($n-$_+1))+"/"+"  "*$_+"\$y"+"|)"[!$x]}

ลองออนไลน์!

พยายามปรับแต่ง$x=บิตนั้น อาจเป็นวิธีที่ชาญฉลาดกว่าในการรับบรรทัดที่ 1 และบรรทัดสุดท้ายในไม่กี่ไบต์ มีดีกว่า$x=แต่ก็ไม่ถูกกว่ามาก



0

Canvas ขนาด 12 ไบต์

┤|×(e⟳ +╴/+║

ลองที่นี่!

คำอธิบาย:

┤             decrease the input by 2
 |×           repeat "|" vertically - if the amount is -1 (for input of 1), ir just removes the item currently
   (          push "("
    e        encase in that parentheis - if that first string isn't there, currently it just fails doing anything and leaves the parenthesis on the stack
     ⟳       rotate clockwise
       +     append horizontally a space
        ╴/   get a diagonal the length of the input
          +  append it horizontally to the current result
           ║  and palindromize horizontally with 0 overlap
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.