ช่วยฉันถูกขังอยู่ในโรงงานที่ไม่มีที่สิ้นสุด!


26

ความท้าทายนี้เป็นแรงบันดาลใจอย่างอิสระโดย Zachtronics เกมInfinifactory

คุณจะได้รับมุมมองจากบนลงล่างของตารางสี่เหลี่ยมของสายพาน, >v<^ตัวแทนจาก อาจมีเซลล์ที่ไม่มีสายพานแสดงด้วยช่องว่าง นี่คือตัวอย่าง:

> <vv    <
 v ^ >v v 
  >v^^>vv^
    ^>^ v 
>  v<v  >>
  >v v<^  

การตั้งค่านี้ล้อมรอบด้วยปริภูมิจำนวนอนันต์

ยิ่งไปกว่านั้นคุณจะได้รับขนาดของชิ้นส่วนรูปสี่เหลี่ยมผืนผ้าที่วางลงบนสายพานที่มุมซ้ายบนของตาราง งานของคุณคือการคิดออกว่าสินค้าจะมาพักหรือว่ามันจะจบลงด้วยการเคลื่อนที่เป็นวง

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

  1. สายพานตรงข้ามยกเลิกซึ่งกันและกัน ดังนั้นหากสินค้า 3x2 ครอบคลุมแพทช์ใด ๆ ต่อไปนี้ (เค้าร่างที่มียัติภังค์และท่อเพื่อความชัดเจน) ผลลัพธ์จะเหมือนกัน:

    +---+   +---+   +---+
    |>>^|   |  ^|   |v^^|
    |^<<|   |^  |   |^^v|
    +---+   +---+   +---+
    

    สิ่งเดียวกันนี้สำหรับ:

    +---+   +---+   +---+
    |v^<|   |   |   |><>|
    |>>>|   |>> |   |>><|
    +---+   +---+   +---+
    

    เนื่องจากตำแหน่งที่แน่นอนของสายพานลำเลียงใต้ตู้สินค้านั้นไม่เกี่ยวข้องจึงไม่สำคัญว่าคุณจะยกเลิกคู่ไหน

    การยกเลิกนี้ใช้ก่อนกฎอื่น ๆ ดังนั้นสำหรับกฎอื่น ๆ จะมีเพียงสายพานลำเลียงในสองทิศทางเท่านั้น

  2. หากสินค้าไม่ครอบคลุมสายพานใด ๆ เลย (อย่างใดอย่างหนึ่งเนื่องจากสายพานทั้งหมดยกเลิกเพราะมันครอบคลุมเฉพาะช่องว่างหรือเพราะมันเคลื่อนย้ายออกจากตารางอย่างเต็มที่) ก็มาถึงส่วนที่เหลือ
  3. หากสินค้าครอบคลุมสายพานลำเลียงมากกว่าหนึ่งทิศทางมากกว่าอีกทิศทางหนึ่งสินค้านั้นจะเคลื่อนที่ไปในทิศทางนั้น เช่นถ้าสินค้า 3x2 ครอบคลุมแพตช์ต่อไปนี้

    >>
    ^>^
    

    ก็จะย้ายไปทางขวาเพราะมีมากขึ้นกว่า> ^ในทางกลับกันถ้ามันครอบคลุม

    >>^
      ^
    

    กฎนี้จะใช้ไม่ได้เพราะมีการผูกระหว่างและ>^

  4. กรณีนี้จะเหลือเฉพาะกรณีที่มีการผูกระหว่างทิศทางที่อยู่ติดกัน ในกรณีนี้สินค้าจะเคลื่อนที่ไปตามแกนที่มันเคลื่อนไหวอยู่แล้วตัวอย่างเช่นหากสินค้า 3x2 เคลื่อนไหวขวาหรือซ้ายเคลื่อนไหวตอนนี้ครอบคลุมปะ

    >>^
    ^  
    

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

ตัวอย่างรายละเอียด

พิจารณาตะแกรงของสายพานลำเลียงที่ด้านบนและบรรทุกสินค้า 3x2 ต่อไปนี้คือการสร้างภาพข้อมูลทีละขั้นตอนของกระบวนการ แต่ละขั้นตอนประกอบด้วยกริดโดยมีสินค้า#เป็นกล่องเล็ก ๆ ซึ่งแสดงให้เห็นถึงสายพานที่ปกคลุมด้วยตู้สินค้าอีกกล่องที่มีสายพานหลังจากยกเลิกและกฎที่กำหนดว่าสินค้าเคลื่อนไปที่ใด:

 ###vv    <    > <vv    <    > <vv    <    > <vv    <    > <vv    <    > <vv    <
 ###^ >v v     ###^ >v v      v ^ >v v      v ^ >v v      v ^ >v v      v ^ >v v 
   >v^^>vv^    ###v^^>vv^    ###v^^>vv^     ###^^>vv^      ###^>vv^      >###>vv^
     ^>^ 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 |  |  >|  |  >|  |   |  |   |  |   |  |   |  |  ^|  |   |  | ^>|  |  >|
+---+  +---+  +---+  +---+  +---+  +---+  +---+  +---+  +---+  +---+  +---+  +---+

   Rule 3        Rule 4        Rule 3        Rule 4        Rule 4        Rule 3

 ================================================================================

 > <vv    <    > <###   <    > <vv    <
  v ###v v      v ###v v      v ###v v 
   >###>vv^      >v^^>vv^      >###>vv^
     ^>^ v         ^>^ v         ^>^ v 
 >  v<v  >>    >  v<v  >>    >  v<v  >>
   >v v<^        >v v<^        >v v<^  

+---+  +---+  +---+  +---+  +---+  +---+
|^ >|  |  >|  |vv |  | v |  |^ >|  |  >|
|v^^|  | ^^|  |^ >|  |  >|  |v^^|  | ^^|
+---+  +---+  +---+  +---+  +---+  +---+

   Rule 3        Rule 4        Rule 3

เมื่อมาถึงจุดนี้สินค้าเข้าสู่วงระหว่างสองเฟรมสุดท้าย

ตอนนี้ให้พิจารณาสินค้า 2x3 แทน:

 ##<vv    <    >##vv    <    > <vv    <    > <vv    <    > <vv    <    > <vv    <
 ## ^ >v v      ##^ >v v      ##^ >v v      v ^ >v v      v ^ >v v      v ^ >v v 
 ##>v^^>vv^     ##v^^>vv^     ##v^^>vv^     ##v^^>vv^      ##^^>vv^      >v^^>vv^
     ^>^ 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|
 +--+  +--+    +--+  +--+    +--+  +--+    +--+  +--+    +--+  +--+    +--+  +--+

   Rule 4        Rule 3        Rule 4        Rule 3        Rule 3        Rule 3

 ================================================================================

 > <vv    <    > <vv    <    > <vv    <
  v ^ >v v      v ^ >v v      v ^ >v v 
   >v^^>vv^      >v^^>vv^      >v^^>vv^
     ^>^ v         ^>^ v         ^>^ v 
 > ##<v  >>    >  v<v  >>    >  v<v  >>
   ## v<^        ## v<^        >v v<^  
   ##            ##            ##
                 ##            ##
                               ##

 +--+  +--+    +--+  +--+    +--+  +--+
 | v|  | v|    |>v|  |>v|    |  |  |  |
 |>v|  |>v|    |  |  |  |    |  |  |  |
 |  |  |  |    |  |  |  |    |  |  |  |
 +--+  +--+    +--+  +--+    +--+  +--+

   Rule 3        Rule 4        Rule 2

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

กฎและข้อสมมติฐาน

ข้อมูลของคุณจะเป็นตารางลำเลียงตามที่อธิบายข้างต้นพร้อมกับความกว้างและความสูงของสินค้า คุณสามารถรับพารามิเตอร์ทั้งสามนี้ตามลำดับและรูปแบบที่สะดวก สำหรับกริดหมายความว่าคุณสามารถอ่านสตริงเดี่ยวที่มีบรรทัดคั่นด้วยการขึ้นบรรทัดใหม่หรืออักขระอื่นหรืออาเรย์ของสตริงหรืออาเรย์ของอาร์เรย์ของอักขระตราบใดที่แต่ละกริดเซลล์ยังคงแสดงโดยตัวอักษร>v<^และ ช่องว่าง

คุณควรส่งออกtruthyค่าถ้าผลการติดตั้งในวงอย่างน้อยสองเฟรมหรือเป็นfalsyค่าถ้าสินค้าจะมาถึงส่วนที่เหลือ

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

คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์

นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ

กรณีทดสอบ

กรณีทดสอบถูกจัดกลุ่มตามกริด

Grid (2x2):

>v
^<

Width  Height  Loop?
1      1       True
1      2       True
2      1       True
2      2       False

Grid (3x3):

> v

^ <

Width  Height  Loop?
1      1       False
1      2       False
1      3       False
2      1       False
2      2       True
2      3       True
3      1       False
3      2       True
3      3       False

Grid (4x3):

>^>v
v^v 
^ <<

Width  Height  Loop?
2      2       False

Grid (6x5):

>v>v>v
^v^v^v
^v^v^v
^>^>^v
^<<<<<

Width  Height  Loop?
1      1       True
1      2       False
2      1       True
2      2       True
2      4       True
2      5       False
3      1       False
3      2       True
3      3       True
3      5       True
6      2       False
6      3       True
6      5       False

Grid (10x6):

> <vv    <
 v ^ >v v 
  >v^^>vv^
    ^>^ v 
>  v<v  >>
  >v v<^  

Width  Height  Loop?
1      1       False
2      3       False
2      6       False
3      2       True
5      4       False
6      1       True
10     6       False

ในฐานะชุดทดสอบเพิ่มเติมเพิ่มเติมให้พิจารณาว่าอินพุตใด ๆ ที่กริดประกอบด้วยเพียงช่องว่างเท่านั้นจะต้องให้ผลลัพธ์ที่ผิดพลาด

ฉันได้ตรวจสอบกรณีทดสอบทั้งหมดด้วยตนเองแล้วโปรดแจ้งให้เราทราบหากคุณคิดว่าฉันทำผิด



4
@ ทำให้ฉันได้รับ Twitch เล่นเรื่องโปเกมอนย้อนหลัง ...
undergroundmonorail

"ข้อมูลของคุณจะเป็นตารางลำเลียงตามที่อธิบายข้างต้นพร้อมกับความกว้างและความสูงของสินค้าคุณอาจใช้พารามิเตอร์ทั้งสามนี้ในการสั่งซื้อและรูปแบบที่สะดวก" - นี่หมายความว่าเราสามารถใช้ตะแกรงลำเลียงเป็นอาร์เรย์ของอาร์เรย์ได้หรือไม่? นั่นคือตาราง 2x2 พร้อมกับ[^^/v<]กลายเป็น[[0,1] [0,1];[0,-1] [-1,0]]? หรือคุณหมายถึงมันขึ้นอยู่กับพวกเราไม่ว่าจะเป็น STDIN, อินพุตสตริง, อินพุตอักขระ char, ฯลฯ แต่ก็ยังต้องอยู่ในรูปแบบของ ^, v,> และ <?
เกลน O

@GlenO คุณสามารถรับสายอักขระขึ้นบรรทัดใหม่ (หรืออักขระอื่น ๆ ) อาร์เรย์ของสตริงหรืออาร์เรย์ของอักขระได้ แต่แต่ละเซลล์ควรแสดงด้วยอักขระ><^vหรือช่องว่าง ฉันจะอธิบายอย่างนั้น
Martin Ender

ดังนั้นจะเกิดอะไรขึ้นหากสินค้าเคลื่อนไปสู่ความขัดแย้งที่ทิศทางต่อเนื่องไม่ใช่หนึ่งในตัวเลือก? นั่นคือถ้ามันเคลื่อนไปทางขวาและตอนนี้ต้องเลือกระหว่างขึ้นและซ้าย
โจชัว

คำตอบ:


7

ทับทิม, 306 298 251 204 198

->g,w,h{m=->y,x,d,v=[]{q=y,x
r=->s{([""]*h+g)[y+h,h].map{|l|(?x*w+l)[x+w,w]}.join.count s}
z=k=r[?v]-r[?^],j=r[?>]-r[?<]
q[d=[d,1,0][j*j<=>k*k]]+=z[d]<=>0
v&[q<<d]!=[]?q!=v[-1]:m[*q,v<<q]}
m[0,0,1]}

แก้ไข:ขอบคุณมากสำหรับ Ventero ที่ย่อโค้ดมาก ๆ โดยใช้เทคนิคที่น่าทึ่ง!

อินพุตและเอาต์พุต

รหัสแสดงถึงฟังก์ชันทับทิมที่ใช้พารามิเตอร์สามตัว:

  • ตารางแสดงเป็นอาร์เรย์ของสตริง (แต่ละแถวเป็นสตริงที่แตกต่างกัน)
  • ความกว้างของสินค้า
  • ความสูงของสินค้า

มันจะส่งกลับ1(ความจริง) ในกรณีที่มีการวนรอบหรือnil(เท็จ) ในกรณีที่สินค้าอยู่

การทดสอบ

ที่นี่จะผ่านการทดสอบทั้งหมดของ Martin: http://ideone.com/zPPZdR

คำอธิบาย

ไม่มีเทคนิคที่ฉลาดในรหัส; เป็นการใช้กฎที่ค่อนข้างตรงไปตรงมา

ในโค้ดด้านล่างmoveนี้เป็นฟังก์ชั่นวนซ้ำที่ทำให้เกิดการเคลื่อนไหวตามกฎและ:

  • ส่งคืนความจริงในกรณีของลูป
  • ผลตอบแทนที่ผิดพลาดในกรณีที่เหลือ
  • มิฉะนั้นเรียกตัวเองว่าจะดำเนินการย้ายต่อไป

รุ่นที่สามารถอ่านเพิ่มเติมได้ที่นี่

หมายเหตุ:รหัส golfed มีการแก้ไขหลายครั้งและไม่เหมือนกับเวอร์ชั่นที่อ่านได้อีกต่อไป


เนื่องจากไม่สำคัญว่าrมีรายการเพิ่มเติมนอกเหนือจากสี่ทิศทางหรือr[y>=0&&x>=0&&g[y]&&g[y][x]]+=1ไม่ควรบันทึกสองสามไบต์
Ventero

ฉันใช้เสรีภาพในการเล่นกอล์ฟเพิ่มขึ้นอีกเล็กน้อยหวังว่าคุณจะไม่สนใจ: ideone.com/k69BmH
Ventero

@ Ventero ว้าวคุณทำสิ่งที่น่าอัศจรรย์กับรหัสแล้ว ฉันไม่เคยคิดที่จะแปลงกัญชาเป็นแลมบ์ดา ฉันลองใช้ความคิดของฉันเพื่อย่อโปรแกรมให้สั้นลง ขอบคุณมาก!
Cristian Lupascu

2
รับลงไปที่ 200 ผ่านการจัดการดัชนีเชิงลบที่สั้นกว่านี้เล็กน้อยเดาว่าฉันจะทิ้งไว้ที่นั่นตอนนี้: ideone.com/k69BmH
Ventero

2
ที่จริงแล้ว 198: ideone.com/ptKrzf :)
Ventero

8

Python 2, 207 ไบต์

def f(L,w,h,u=0,v=0,D=1,S=[]):a,b,c,d=map(`[r[u*(u>0):u+w]for r in L[v*(v>0):v+h]]`.count,"v^><");D=cmp(abs(a-b),abs(c-d))<D;T=u,v,D;return T in S or a-b|c-d and f(L,w,h,u+cmp(c,d)*D,v+cmp(a,b)*0**D,D,S+[T])

ป้อนตารางเป็นรายการของแถวเช่น

['>v>v>v', '^v^v^v', '^v^v^v', '^>^>^v', '^<<<<<']

ตามด้วยความกว้างและความสูง ผลตอบแทน0หรือTrueตาม

คำอธิบาย

def f(L,          # Grid
      w,h,        # Width, height of cargo
      u=0,v=0,    # Position of top-left of cargo, initially (0, 0)
      D=1,        # Moving left/right = 1, up/down = 0
      S=[]        # Seen (pos, axis) pairs, initially empty
     ):     

     # Arrows under cargo - no need for "".join since we only need to count v^<>
     A = `[r[u*(u>0):u+w]for r in L[v*(v>0):v+h]]`

     # Count for each arrow
     a,b,c,d=map(A.count,"v^><")

     # Golfed form of abs(a-b) < abs(c-d) or (abs(a-b) == abs(c-d) and D == 1)
     D=cmp(abs(a-b),abs(c-d))<D
     T=u,v,D

     return (T in S                # Return True if (pos, axis) previously seen
             or a-b|c-d               # Return 0 if all conveyors cancel
             and f(L,w,h,             # Otherwise, recurse
                   u+cmp(c,d)*D,      # Update u if moving left/right
                   v+cmp(a,b)*0**D,   # Update v if moving up/down
                   D,
                   S+[T]          # Add (pos, axis) to seen
                  )
            )

คุณไม่สามารถย่อให้สั้นลงได้ด้วยการกำหนดcmpตัวแปรหรือไม่
Blue

การตรวจสอบรอบโดยการตรวจสอบตำแหน่งที่เยี่ยมชมแล้วมีเพียงพอหรือไม่ ขึ้นอยู่กับกฎ 4 ขั้นตอนต่อไปอาจได้รับอิทธิพลจากทิศทางก่อนหน้า ดังนั้นจึงเป็นไปได้ว่าคุณสามารถมาถึงตำแหน่งเดิมสองครั้ง แต่ไม่มีรอบเนื่องจากคุณเคลื่อนที่ในทิศทางที่ต่างกันโดยขึ้นอยู่กับทิศทางก่อนหน้า
Reto Koradi

@muddyfish ที่เพิ่งพัง
Sp3000

@RetoKoradi หวังว่าจะได้รับการแก้ไข
Sp3000

ใช่การเพิ่มDคีย์ตำแหน่งควรทำ
Reto Koradi

8

Julia - 394 300 246 214 ไบต์

f(A,x,y)=(Z=sign;(S,T)=size(A);X=x+1;Y=y+1;G=fill(5,S+2y,T+2x);G[Y:S+y,X:T+x]=A;C=0G;D=1;while C[Y,X]!=D C[Y,X]=D;i,j=sum(i->1-[19 8]i%82%3,G[Y:Y+y-1,X:X+x-1]);D=Z(2i^2-2j^2+(i!=0)D);X+=Z(i+D*i);Y+=Z(j-D*j)end;D^2)

ผลตอบแทนที่ 1 หากสินค้าวนรอบและ 0 ถ้ามันหยุด มันไม่ใช่ความจริง "เท็จ" / ที่เป็นเท็จในที่จูเลียไม่อนุญาตให้มี 0 และ 1 ในบริบทบูลีน ... แต่ฉันพิจารณาค่าxที่bool(x)==trueเป็นจริงและbool(x)==falseเป็นเท็จ

อินพุตAควรอยู่ในรูปแบบของอาร์เรย์อักขระ หากคุณคัดลอก / วางตารางสายพานลำเลียงคุณจะต้องรับมันลงในแบบฟอร์มที่เหมาะสม เพื่อช่วยให้คุณไม่ต้องจัดการกับมันเองให้ใช้สิ่งต่อไปนี้:

A=foldl(hcat,map(collect,split("""(PASTE GRID HERE)""","\n")))'

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

Ungolfed:

function f(A,x,y)
  # Determine size of grid for use later
  (S,T)=size(A)
  # Initialise starting position (performed here to save characters)
  X=x+1
  Y=y+1
  # Create an expanded field that is functionally "spaces" (to provide
  # spaces at edges for the cargo to stop in)
  G=fill(5,S+2y,T+2x)
  # Put the conveyor grid into centre of the expanded field
  G[Y:S+y,X:T+x]=A
  # Create an array storing the most recent movement direction:
  # will use 1=horizontal, -1=vertical, 0=stopped
  C=0G
  # Initialise current direction (same system as C)
  D=1
  # Loop until it finds itself repeating a coordinate/direction pair
  while C[Y,X]!=D
    # Mark current coordinate/direction pair in array
    C[Y,X]=D
    # Determine the net coordinate pairing, stored in two variables
    # for golf purposes *SEE NOTE*
    i,j=sum(i->1-[19 8]i%82%3,G[Y:Y+y-1,X:X+x-1])
    # Determine new movement axis (if D=0, cargo stopped)
    D=sign(2i^2-2j^2+(i!=0)D)
    # Update X or Y depending on signs of D and the appropriate direction
    X+=sign(i+D*i)
    Y+=sign(j-D*j)
  end
  # if D=±1, return 1 (cargo is still moving), otherwise return 0
  return D^2
end

หมายเหตุ: 1-[19 8]i%82%3ได้รับเลือกให้แมปอักขระที่เป็นไปได้ทั้งห้ากับคู่พิกัดที่เหมาะสมด้วยวิธีที่มีประสิทธิภาพที่สุดที่ฉันสามารถหาได้ และนี่ก็เป็นเหตุผลสำหรับการใช้ 5 เพื่อเติมเต็มช่องว่างเมื่อสร้างที่G- [0 0]มันเป็นตัวละครหลักเดียวที่แมปไป

ตัวอย่างการใช้งาน:

julia> A=foldl(hcat,map(collect,split(""">v>v>v
       ^v^v^v
       ^v^v^v
       ^>^>^v
       ^<<<<<""","\n")))';

julia> f(A,2,1)
true

julia> f(A,3,3)
true

julia> f(A,5,2)
false

f(A,x,y)=f=(A,x,y)->จะสั้นกว่า
Alex A.

@AlexA - จริง แต่แล้วฉันอาจลบf=และทำให้ฟังก์ชั่นไม่ระบุชื่อเมื่อฉันเล่นกอล์ฟเสร็จ
เกลน O

1
มันจะมีความยาวเท่ากันถ้าเป็นฟังก์ชั่นที่มีชื่อเทียบกับฟังก์ชั่นที่ไม่ระบุชื่อเมื่อมีหลายพารามิเตอร์ กับf()= ()->
Alex A.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.