แถว, คอลัมน์, แนวทแยง, บล็อค


13

เขียนบล็อกสี่เหลี่ยมของรหัสที่มีความกว้าง N ตัวอักษรและสูง N ตัวสำหรับจำนวนเต็มบวก N

ตัวอย่างเช่น N ของคุณอาจเป็น 5 และบล็อกมีลักษณะดังนี้:

ThisI
sMy5B
y5Cod
eBloc
kOkay

บล็อกนี้ต้องทำงานดังนี้:

  1. เมื่อแถวบนสุดถูกแยกและรันเป็นโปรแกรมข้อความที่rowต้องการจะพิมพ์เป็น stdout

    ยกตัวอย่างเช่นจะพิมพ์ThisIrow

  2. เมื่อคอลัมน์ด้านซ้ายถูกแยกและเรียกใช้เป็นโปรแกรมข้อความที่แน่นอนcolจะต้องพิมพ์ไปยัง stdout

    ยกตัวอย่างเช่นจะพิมพ์Tsyekcol

  3. เมื่อเส้นทแยงมุมหลักจากมุมบนซ้ายไปยังมุมขวาล่างถูกแยกและเรียกใช้เป็นโปรแกรมข้อความที่แน่นอนdiaจะต้องพิมพ์ไปยัง stdout

    ยกตัวอย่างเช่นจะพิมพ์TMCoydia

  4. เมื่อบล็อกทั้งหมดถูกเรียกใช้เป็นโปรแกรมรวมถึงการขึ้นบรรทัดใหม่ (ด้วยการขึ้นบรรทัดใหม่ที่ไม่จำเป็น) ข้อความที่ถูกblkต้องจะต้องพิมพ์ไปที่ stdout

    ตัวอย่างเช่น,

    ThisI
    sMy5B
    y5Cod
    eBloc
    kOkay
    

    blkจะพิมพ์

รายละเอียด

  • โปรแกรมทั้งสี่นั้นทำงานในภาษาการเขียนโปรแกรมเดียวกัน
  • ที่อยู่2ตัวละครในบล็อกเดิมอาจจะเป็นอะไร แต่เส้นจุดสิ้นสุด
  • หากภาษาของคุณไม่มี stdout คุณอาจใช้วิธีการแสดงผลทั่วไปอื่น ต้องเป็นวิธีการเดียวกันในทั้งสี่โปรแกรม

การส่งที่บล็อกดั้งเดิมมีอักขระที่แตกต่างกันน้อยที่สุด (ไม่นับบรรทัดใหม่) ชนะ Tiebreaker ไปที่การส่งโดยมี N ตัวเล็กกว่า


ระบุว่ามีวิธีแก้ปัญหาในภาษาลึกลับสองสัญลักษณ์บางอย่างฉันคิดว่านี่จะเป็นวิธีการแก้ปัญหาที่จะบีบลงใน N. ที่เล็กที่สุด
xnor

@ xnor อาจเป็นไปได้ แม้ว่าคำตอบLenguage ที่แตกต่างกัน 1 ข้อนั้นไม่ได้อยู่นอกขอบเขตของความเป็นไปได้ ถึงกระนั้นวิธีการให้คะแนนนี้น่าสนใจยิ่งกว่าการได้ชัยชนะน้อยที่สุดก่อน
งานอดิเรกของ Calvin

Lenguage ทำงานได้อย่างไรเมื่อโปรแกรมแถวและคอลัมน์มีความยาวเท่ากัน
xnor

@xnor Ah คุณพูดถูก มันไม่ทำงาน
งานอดิเรกของ Calvin

โปรแกรมที่ไม่ใช่บล็อกสามารถลงท้ายด้วยบรรทัดใหม่ต่อท้ายได้หรือไม่
jimmy23013

คำตอบ:


6

> <> (ปลา) 3 ตัวอักษรที่ไม่ซ้ำกัน (N = 2000)

รหัสใช้1และ-ใส่หมายเลขโดยพลการในสแต็กและp(ด้วยตนเอง) แก้ไขรหัสตามหมายเลข 3 อันดับแรกของสแต็ก เช่นการวาง!ในตำแหน่งที่0 0จะมีลักษณะ003b*pปกติ> <> และมันจะกลายเป็นp1-111-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1--11-11-p

หลังจากการแก้ไขตัวชี้คำแนะนำ (IP) ล้อมรอบโค้ดและรันส่วนที่ถูกดัดแปลง ในกรณี "บล็อก" IP จะถูกเปลี่ยนเส้นทางสำหรับการแก้ไขเพิ่มเติม (จากนั้นเปลี่ยนเส้นทางใหม่) เพื่อให้แตกต่างจากกรณี "แถว" ในกรณี "แถว" การเปลี่ยนเส้นทางสองครั้งเดียวกันเกิดขึ้น แต่ไม่มีรหัสอยู่ระหว่างนั้นจึงไม่มีผลกระทบ

รหัสสุดท้ายที่สร้างขึ้นสำหรับ 4 ราย (ละเว้นp1-ส่วนที่ไม่เปลี่ยนแปลง):

row:      "wor"\ooo;

column:   "loc"ooo;

diagonal: "dia"ooo;

block:    "wor"\"klb"ooo;

ขนาดรหัสคือ 4 MB และรหัสที่สามารถเข้าถึงได้ที่นี่ (ไม่มีปัญหาในการใช้งาน)

โปรแกรมกำเนิด python3 สามารถเข้าถึงได้ที่นี่


14

CJam, 13 12 อักขระที่ไม่ซ้ำกัน, N = 5

"row"
cd;"a
oaiaa
l"aa;
"blk"

ตรงไปข้างหน้าตามที่ได้รับ

UPDATE : แปลงพื้นที่เป็นa(ไม่มีตัวเลือกในกรณีนี้) ตามที่ระบุไว้ใน Runner112

ลองออนไลน์ได้ที่นี่


2
ทุกพื้นที่สามารถเปลี่ยนเป็นตัวละครได้เหมือนaนำตัวละครที่ไม่เหมือนใครมานับถอยหลังได้ถึง 12 ใช่ไหม?
Runer112

@ Runer112 ประณาม! ขอบคุณสำหรับทิป!
เครื่องมือเพิ่มประสิทธิภาพ

8

Bash, 19 ตัวละครที่ไม่ซ้ำกัน, N = 19

trap echo\ row exit
t=t trap exit      
t=t echo blk       
exit               
=                  
t    e             
      c            
e      h           
c       o          
h                  
o         d        
           i       
c           a      
o                  
l                  
  • trap echo\ row exitแถวแรกคือ สิ่งนี้ทำให้เกิดecho rowการดำเนินการเมื่อสคริปต์ออก (เพียงบรรทัดแรก)
  • คอลัมน์แรกคือ ttt=t echo col
  • เส้นทแยงมุมนั้น t=tt echo dia
  • บล็อกเต็มใช้งานได้โดยยกเลิกตัวจัดการ EXIT ที่ตั้งค่าในบรรทัดแรกจากecho blkนั้นออก

1
คุณสามารถใช้ตัวพิมพ์เล็กexitเพื่อลดอักขระที่ไม่ซ้ำโดย 4 คุณยังสามารถย้ายexitคำสั่งไปยังบรรทัดถัดไปและแทนที่อัฒภาคทั้งหมดด้วยช่องว่าง
jimmy23013

6

> <> , 14 อักขระที่ไม่ซ้ำกัน N = 10

"wor"\ooo;
     "    
l a  k    
o  i l    
c   db    
"    "    
o    oo   
o    o o  
o    o  o 
;    ;   ;

ค่อนข้างตรงไปตรงมาในภาษา 2D ส่วนที่ยุ่งยากเพียงว่าเราต้องการ\ที่จะแยกแยะระหว่างและrowblk


บันทึกแบบสุ่มที่p1-จะให้วิธีแก้ปัญหาสามตัว แต่มันน่ารำคาญจริงๆที่จะสร้าง (และอาจจะไม่ชนะ)
Sp3000

3

Brainfuck, 2 ตัวละครที่ไม่ซ้ำกัน N = 378

ด้วยกฎก้มเล็กน้อยที่เป็นไปได้

โปรแกรมนี้เป็นตาดขนาดใหญ่เพื่อให้ที่นี่เป็นลิงค์ไปบน Pastebin

row, colและdiaโปรแกรมที่ตรงไปตรงมา พวกเขาเพียงแค่เพิ่มไบต์เซลล์จนกว่าจะถึงรหัส ASCII ที่ถูกต้องแล้วส่งออก ถ้าจดหมายผ่านไปแล้วมันจะเพิ่มขึ้นเรื่อย ๆ จนกว่าเซลล์จะล้นเพื่อให้สามารถเริ่มต้นอีกครั้งที่ 0

blkโปรแกรมเป็นที่ที่ดัดกฎเล็กน้อยเกิดขึ้น เพื่อที่จะพิมพ์ "ข้อความที่แน่นอนblk" ตามที่ถามในความท้าทาย backspaces จะถูกใช้ (รหัส ASCII 8) ซึ่งต้องการการแสดงคอนโซล / เทอร์มินัลเพื่อรองรับ เมื่อใดก็ตามที่มีค่าหลงทางจากrow/ col/ diaโปรแกรมถูกพิมพ์ออกมาฉันมั่นใจว่าพวกมันจะถูกลบออกโดยส่งรหัสควบคุม backspace สองสามตัว เพื่อลดความซับซ้อนของสิ่งต่าง ๆ ฉันมั่นใจว่าค่าที่ผิดพลาดทั้งหมดที่ส่งออก ณ จุดหนึ่งเป็นส่วนหนึ่งของช่วง ASCII ที่พิมพ์ได้


2

C (gcc) , 26 ตัวอักษรที่ไม่ซ้ำกัน, N = 29

*w;main(){printf(w?w:"row");}
ww;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;/*;;;;;;;;;;;;;;;;;;;;;;;;
m;;m;;;;;;;;;;;;;;;;;;;;;;;;;
a;;;a;;;;;;;;;;;;;;;;;;;;;;;;
i;;;;i;;;;;;;;;;;;;;;;;;;;;;;
n;;;;;n;;;;;;;;;;;;;;;;;;;;;;
(;;;;;;(;;;;;;;;;;;;;;;;;;;;;
);;;;;;;);;;;;;;;;;;;;;;;;;;;
{;;;;;;;;{;;;;;;;;;;;;;;;;;;;
p;;;;;;;;;p;;;;;;;;;;;;;;;;;;
r;;;;;;;;;;r;;;;;;;;;;;;;;;;;
i;;;;;;;;;;;i;;;;;;;;;;;;;;;;
n;;;;;;;;;;;;n;;;;;;;;;;;;;;;
t;;;;;;;;;;;;;t;;;;;;;;;;;;;;
f;;;;;;;;;;;;;;f;;;;;;;;;;;;;
(;;;;;;;;;;;;;;;(;;;;;;;;;;;;
";;;;;;;;;;;;;;;;";;;;;;;;;;;
c;;;;;;;;;;;;;;;;;d;;;;;;;;;;
o;;;;;;;;;;;;;;;;;;i;;;;;;;;;
l;;;;;;;;;;;;;;;;;;;a;;;;;;;;
";;;;;;;;;;;;;;;;;;;;";;;;;;;
);;;;;;;;;;;;;;;;;;;;;);;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
};;;;;;;;;;;;;;;;;;;;;;;};;*/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;*w="blk";

ลองออนไลน์!


1

Ruby, 24 ตัวอักษรที่ไม่ซ้ำกัน N = 17

trap(0){$><<:row}
rr=a=:blk;%;00000
a0a00000000000000
p00p0000000000000
(000(000000000000
00000000000000000
)00000)0000000000
{000000{000000000
$0000000$00000000
>00000000>0000000
<000000000<000000
<0000000000<00000
:00000000000:0000
c000000000000d000
o0000000000000i00
l;;trap(0){$><<a;
};000000000000;{}

ลองออนไลน์!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.