เกิดอะไรขึ้นกับตัวแปรสาธารณะ


33

รหัสบอท

ฉันเกลียดตัวแปรที่เป็นส่วนตัวและมีการป้องกัน ฉันแค่ต้องการเข้าถึงทุกสิ่ง!

หากคุณเป็นเหมือนฉันความท้าทายนี้เหมาะสำหรับคุณ!

เขียนบอทที่ทำงานร่วมกันอย่างกลมกลืนกับบ็อตอื่นทำให้บอทอื่นทำในสิ่งที่คุณต้องการ คุณเป็นโปรแกรมเมอร์และคุณรู้ว่าสิ่งต่าง ๆ ควรทำงานอย่างไร งานของคุณคือแปลงบ็อตอื่น ๆ ให้เป็นไปตามที่คุณต้องการ

รหัส

คุณจะมีรหัส 24 บรรทัดในการเขียนบอทของคุณ ทุกเทิร์นทุกบอทจะรัน 1 บรรทัดตามลำดับ

แต่ละบอเก็บ 5 ตัวแปรผ่าน A และสำหรับการใช้งานส่วนตัวเก็บบรรทัดถัดไปเพื่อดำเนินการจัดเก็บทิศทางปัจจุบันและเป็นตัวเลขสุ่ม ตัวแปรเริ่มต้นที่ 0 ยกเว้นซึ่งจะเริ่มต้นด้วยค่าสุ่ม ตัวแปรทั้งหมดมีการจัดเก็บ 0-23 เท่านั้น ตัวเลขที่ใหญ่กว่าหรือเล็กกว่าจะถูกปรับด้วย 24EABCDED

ในโพสต์นี้ฉันจะใช้คู่ต่อสู้เป็นบอทที่อยู่ติดกันที่คุณเผชิญ

แต่ละบรรทัดต้องมีหนึ่งใน 5 คำสั่งต่อไปนี้:

  1. Flagไม่ทำอะไรเลย ยกเว้นว่าเป็นวิธีการที่คุณชนะ
  2. Moveย้ายบอทของคุณไปในDทิศทางที่ หากบอทครอบครองพื้นที่แล้วจะไม่มีการเคลื่อนไหวเกิดขึ้น
  3. Copy Var1 Var2 คัดลอกเนื้อหาของ Var1 ลงใน Var2
  4. If Condition Line1 Line2 ถ้า Condition เป็น true ให้เรียกใช้ Line1 หรือ Line2
  5. Block Var1 บล็อกการเขียนครั้งต่อไปของตัวแปร

ตัวแปรสามารถใช้ดังนี้:

#Varจะใช้ตัวแปรเป็นหมายเลขบรรทัด ถ้าAเป็น 17 Copy #8 #Aจะคัดลอกเนื้อหาของบรรทัดที่ 8 ไปยังบรรทัดที่ 17 *Varจะใช้ตัวแปรของฝ่ายตรงข้ามของคุณ Copy 5 *Cจะตั้งค่าCตัวแปรของคู่ต่อสู้เพื่อ5 Var+Varเพิ่มตัวแปรสองตัว Copy D+1 Dจะหมุนบอทไปทางขวา

เมื่อDใช้เป็นทิศทาง[North, East, South, West][D%4]จะถูกใช้

ตัวดัดแปลงเหล่านี้สามารถถูกล่ามโซ่: Copy *#*C #9จะคัดลอกบรรทัดถัดไปที่คู่ต่อสู้ของคุณจะดำเนินการเป็นรหัสของคุณเองในบรรทัดที่ 9 **DหมายถึงDตัวแปรของฝ่ายตรงข้ามของคุณ

เงื่อนไขจะถูกประเมินดังนี้:

  1. ถ้าVar:
    1. ถ้า Var Aผ่านไปCมันจะคืนค่าจริงถ้า Var ไม่ใช่ศูนย์มิฉะนั้นจะเป็นเท็จ
    2. ถ้า Var คือDมันจะกลับมาจริงถ้ามีบอทไปในDทิศทางที่สามเป็นเท็จ
    3. ถ้า Var คือEมันจะกลับจริงถ้า E เป็นคี่เท็จอื่น
    4. ถ้า Var เป็นเส้นมันจะคืนค่าจริงถ้าเป็นเส้นธง
  2. ถ้าVar1=Var2:
    1. ผลตอบแทนจริงถ้าทั้งสองA-Eและเท่ากับจำนวนเดียวกัน
    2. ผลตอบแทนจริงถ้าทั้งสองเป็นเส้นและประเภทของเส้นจะเท่ากัน
  3. ถ้าVar1==Var2:
    1. ผลตอบแทนจริงถ้าทั้งสองA-Eและเท่ากับจำนวนเดียวกัน
    2. ผลตอบแทนจริงถ้าทั้งคู่เป็นเส้นและเหมือนกัน (ธงจากบอตที่แตกต่างกันจะไม่เท่ากัน)

50 บอทของแต่ละประเภทจะถูกวางไว้ในโลก toroidal ในรูปแบบดังต่อไปนี้:

B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.

หลังจากแต่ละเกมครบ 5,000 รอบธงในแต่ละบอทจะถูกนับ คุณจะได้รับคะแนนถ้าบอทมีธงของคุณมากกว่าธงประเภทอื่น ๆ หากกรณีของการเสมอกันระหว่างNบอทจะไม่มีการให้คะแนน

จะมี 10 เกมและคะแนนจะถูกสะสมในตอนท้าย

หมายเหตุด้านข้าง

อนุญาตให้แสดงความคิดเห็นในตอนท้ายของบรรทัดและแสดงด้วย //

การพยายามทำสิ่งที่ไม่สมเหตุสมผลเช่นการเพิ่มเข้าไปในบรรทัดจะไม่ทำอะไรเลย

ความพยายามที่จะทำอะไรบางอย่างบนบอทที่ไม่มีอยู่จริงจะไม่ทำอะไรเลย

การเรียกซ้ำแบบไม่มีที่สิ้นสุดในIfพินัยกรรมจะสิ้นสุดลงโดยไม่มีบรรทัดที่ดำเนินการ

If ไม่เปลี่ยนค่าของ C

A Blockไม่หมดอายุจนกว่าจะมีคนพยายามเขียนถึงมัน

ตัวแปรและบรรทัดหลายรายการสามารถบล็อกได้ในครั้งเดียว

Blockการเปลี่ยนแปลงตัวแปรหลายครั้งจะบล็อกหลายครั้งตราบเท่าที่คำสั่งบล็อกที่สองอยู่ในบรรทัดของรหัสที่แตกต่างจากครั้งแรกของคุณ

ช่องว่างได้รับอนุญาตเฉพาะระหว่างการขัดแย้ง (และหลังคำสั่ง)

หากบอทสั้นกว่า 24 บรรทัดแฟล็กจะเป็นเส้นที่เหลือ

โปรแกรมตัวอย่าง

Copy 2 C        //Skip to the If line
Flag            //Where I'm storing my flag
Move            //Move in the D'th direction
If D #5 #2      //If there's a bot, copy code, otherwise, move!
Copy #1 *#E     //Copy my flag onto a random spot in my bot's code
Copy 2 C        //Skip back to the If line

โปรแกรมจะทำงานโดยการควบคุมงูหลามของฉันที่นี่

ตัวควบคุมจาวาอยู่ที่นี่ มันเร็วและดูดีกว่างูหลาม

สกอร์:

  1. 6837 $ คัดลอก
  2. 3355 ฮีด
  3. 1695 MindControl
  4. 967 ไบเซนไทน์
  5. โจมตี 959 หรือ
  6. 743 Cadmyllion
  7. 367 ไข้หวัดใหญ่
  8. 251 TheCommonCold
  9. 226 Magus
  10. 137 HideBlockAttack
  11. 129 RowBot
  12. 123 FastMoveCloneDodge
  13. 112 FastForwardClone
  14. 96 QuickFreeze
  15. 71 ซ่อมและป้องกัน
  16. 96 SuperFreeze
  17. 93 RovingVirus
  18. 80 ForwardClone
  19. 77 FreezeTag
  20. 68 Palimpseste
  21. 62 BlockFreezeAttack
  22. 51 RushAttackDodge
  23. 46 Blocker
  24. 40 TurretMaker
  25. 37 Copycat
  26. 37 กามิกาเซ่
  27. 35 FlagInjector
  28. 33 RandomCopier
  29. 31 ร้ายกาจ
  30. 29 HappyAsAClam
  31. 25 NanoVirus
  32. 21 Nullifier
  33. 19 Nanoviris
  34. 17 BoringCopybot
  35. 16 Movebot
  36. 14 Flagbot
  37. 13 Neutralizer
  38. 12 โรคมะเร็ง
  39. 9 DNAbot
  40. 9 ปรสิต
  41. 8 MetaInsidious
  42. 8 Rebranding
  43. 8 AdaptiveBot
  44. 8 ReproducingBot
  45. 8 KungFuBot
  46. 5 QuickFreezerbot
  47. 4 ผู้โจมตี

1
ฉันจะเกี่ยวกับเรื่องนี้เมื่อ Java พร้อมให้ฉันทดสอบ
Wasmoo

2
ฉันสมมติว่าคุณไม่เคยเล่นสงครามแกน en.wikipedia.org/wiki/Core_War
matt_black

ฉันไม่ได้เล่น แต่ฉันอ่านมันค่อนข้างมากในขณะที่เขียนความท้าทายนี้
Nathan Merrill

ฉันมีแพทช์สำหรับคอนโทรลเลอร์ Python และพยายามผลักดันมันกลับมาให้คุณที่ GitHub ... แต่ฉันไม่ได้รับอนุญาต / ไม่รู้จัก git โปรแกรมปะแก้จะแทนที่ "16" s ทั้งหมดด้วย "num_lines" เพื่อให้สามารถเข้าถึงการเขียน / การข้ามไปยัง 8 คำสั่งสุดท้าย ยังลบ "max_flag_count = 0" ออกจากเงื่อนไขการผูกใน declare_flags () ซึ่งบางครั้งได้รับรางวัลการผูกสองทางไปที่บอทที่สาม
adipy

1
การทางพิเศษแห่งประเทศไทยเมื่อใดรอบการต่อสู้ต่อไปจะถูกเรียกใช้? ไม่รีบเลย ฉันแค่อยากรู้ ขอบคุณ
COTO

คำตอบ:


13

Flagbot

Flag

ทำไมต้องทำอะไรเมื่อบอทคนอื่นจะดีพอที่จะให้รหัสแก่ฉัน


8

ตรึงแท็ก

Move
If D #3 #2
Copy 23 C
Copy 3 C
Copy #23 *#*C
Copy #21 *#*C+1
Copy #22 *#*C+2
Copy #21 *#*C+3
Copy #22 *#*C+4
Copy #21 *#*C+5
Copy #22 *#*C+6
Copy #21 *#*C+7
Copy #22 *#*C+8
Copy #21 *#*C+9
Copy #22 *#*C+10
Copy #21 *#*C+11
Copy #22 *#*C+12
Copy #21 *#*C+13
Copy #22 *#*C+14
Copy D+1 D
Copy 0 C
Flag
Flag
Copy C+23 C

กับดักของฝ่ายตรงข้ามในวงเติมเขาด้วยธงย้ายไปยังฝ่ายตรงข้ามต่อไป


Copy C+23 Cนี่จะเป็นบรรทัดที่เป็นอันตรายที่สุดของรหัส xD
Cruncher

ฉันสนใจ. สิ่งนี้อาจจะแก้ไขได้ แทนที่จะเติมพวกเขาด้วยธงคุณสามารถใส่วนในพวกเขาที่เติมตัวเองด้วยธง? หรือว่าจะไม่นับเป็นธงของคุณ?
Cruncher

นั่นเป็นความคิดที่เรียบร้อยและเป็นไปได้ แต่ซับซ้อนกว่า คุณควรเขียนบอทที่ใช้มัน :)
SPARR

2
คุณรู้คำตอบสำหรับคำถามสุดท้ายหรือไม่ Or would that not count as your flags?. เพราะหากพวกเขาไม่นับเป็นธงของคุณเองมันไม่ใช่ทางออกที่ดีแน่นอน
Cruncher

@ ครูเกอร์คุณสามารถให้หนึ่งในธงของคุณและทำให้พวกเขาคัดลอกซึ่งจะนับเป็นหนึ่งในของคุณ
Sparr

8

ปรสิต

ทำไมต้องฆ่าบอทอื่น ๆ บอทนี้จะดูรหัสของฝ่ายตรงข้ามและแทนที่เฉพาะธง

Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag
Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag
Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag

8

$ คัดลอก

บอทนี้ใช้เทคนิคแบบเดียวกับล็อคฮีดของ COTO ดังนั้นฉันจะยืมและยกระดับ

นี้แสวงหาประโยชน์Cช่องโหว่ที่จะบล็อกการแบ่งและแม้กระทั่งกลับ neutralizer มันถูกเขียนในรูปแบบสัมบูรณ์ด้วยเหตุนี้ ฉันคิดว่ามันอาจจะพังถ้าCกะได้รับการคืนสถานะ แต่ตราบใดที่การกะเป็นค่าคงที่ก็สามารถเขียนใหม่เพื่อต่อสู้กับมันได้

ไม่ว่าจะด้วยเหตุผลใดการขาดการวนซ้ำทำให้บอทนี้สุดยอดมาก

Block #C+A 
If D #7 #13        //If [enemy] Copy 0 ELSE block
If D #8 #0         //If [enemy] Freeze 0 ELSE block
If D #9 #6         //If [enemy] FreezeCheck ELSE Inc
Move
Copy 0 C
Copy A+5 A          //Inc
Copy 23 *C          //Copy 0
Copy #10 *#*C+23    //FreezeAttack
If *#*C==#10 #11 #5 //FreezeCheck: If [frozen] GOTO Copy Attack ELSE GOTO [1]
Copy C+23 C         //FREEZE
Copy 13 C           //GOTO Copy Attack
Copy 15 C           //Loop Copy Attack
Block #C+A
Copy D+3 *D             //Copy Attack: Spin Enemy
Copy 0 *B               //Set enemy counter (a la COTO)
Copy #*B+0 *#*C+*B+1    //Copy my lines
Copy #*B+1 *#*C+*B+2    //Copy my lines
Copy #*B+2 *#*C+*B+3    //Copy my lines
Copy *B+3 *B            //Inc counter
If *B==0 #19 #12        //Loop check
Copy D+1 D              //Turn myself

1
ฉันจะโค้งคำนับการออกแบบที่ได้รับการปรับปรุงของคุณและเผชิญหน้ากับคุณอีกครั้งในการแข่งขัน Bots v. 3 ;)
COTO

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

ใครบางคนสามารถสรุปบางส่วนพฤติกรรมที่แท้จริงของ Block และวิธีที่บอทและล็อกฮีดใช้ประโยชน์จากมัน
Sparr

แต่ละบรรทัดสามารถเกิดขึ้นบล็อกตามที่อธิบายHappyAsAClam สิ่งสำคัญที่สุดคือจะไม่สแตกสำหรับบล็อกที่เรียกด้วยCค่าเดียวกัน ดังนั้นบล็อกสามารถถูกสแต็กเมื่อเรียกจากIfคำสั่งซึ่งเป็นการหาประโยชน์ที่ใช้ที่นี่ $ คัดลอกบล็อกการแบ่ง (เช่นหอย) โดยดำเนินการCopyในบรรทัดเดียวกันซ้ำไปซ้ำมาจนประสบความสำเร็จซึ่งทำให้มันได้เปรียบกว่า Lockheed
Wasmoo

7

ล็อกฮีด

การส่งครั้งที่สาม (และอาจเป็นครั้งสุดท้าย) ของฉันในสงครามบอทนี้โดยเฉพาะ: เครื่องปฏิกรณ์ Lockheed หรือ "Lockheed" โดยย่อ

Block #C+A
If D #C+7 #C+1
Block #C+A
Move
Copy A+5 A
If A==0 #C+12 #C+21
Copy C+17 C
Copy D+3 *D
Copy C+9 C
Copy C+21 C
Copy C+23 C
Copy #C+23 *#*C+2
Copy #C+22 *#*C+1
Copy 0 *A
Copy #*A+C+9 *#*C+*A+1
Copy *A+1 *A
If *A==0 #C+15 #C+17
Copy D+1 D
Copy C+5 C

ขอขอบคุณเป็นพิเศษไปที่ @Wasmoo ผู้แบ่งปันการค้นพบ "" การบล็อกตัวแปรหลายครั้งจะบล็อกหลายครั้งตราบเท่าที่คำสั่งบล็อกที่สองอยู่ในรหัสบรรทัดที่แตกต่างจากครั้งแรกของคุณ ' เพียงแค่ไม่ได้ใช้ประโยชน์ ฉันใช้มันอย่างกว้างขวาง

นอกจากนี้ขอขอบคุณไปยัง Nathan Merill สำหรับการบริหารการแข่งขันและเพื่อเผยแพร่การจำลอง เครื่องจำลองมีราคาสูงที่สุดในการปรับแต่งบ็อต ฉันจะไม่เชื่อว่าถ้าฉันไม่ได้จำลองด้วยตาของฉันเอง แต่การเพิ่มหรือลบคุณลักษณะบอทที่มีแนวคิดน้อยที่สุดอาจหมายถึงความแตกต่างระหว่างความสำเร็จที่ยิ่งใหญ่และความล้มเหลวที่น่าสังเวช ฉันฉีกขาดเป็นสิ่งที่ดีหรือไม่


การบล็อกตัวแปรหลายครั้งล้มเหลว อย่างไรก็ตามมันจะล้มเหลวในการบล็อกถ้า: คุณกำลังรันบรรทัดเดียวกัน (การIfชี้ไปที่บรรทัดนั้นจะไม่ล้มเหลว), คุณกำลังบล็อกค่าเดียวกัน (บรรทัดเดียวสามารถบล็อกบรรทัด 1-24 ด้วยตัวแปรที่เพิ่มขึ้น) และ บล็อกยังไม่ได้เปิดตัว (ใครบางคนพยายามปรับเปลี่ยนตัวแปรนั้น)
Nathan Merrill

ฉันประกวดคำแถลงใน OP เนื่องจากคำสั่งบล็อกถูกป้อนให้ IP ไม่ใช่คำสั่งบล็อก ดังนั้นคำสั่งบล็อกเดียวสามารถสร้างได้มากถึง 24 บล็อกแยกในทุกคำแนะนำ ฉันส่งว่าประโยคใน OP ระบุ "ตราบเท่าที่คำสั่งบล็อกที่สองอยู่ในบรรทัดที่แตกต่างจากรหัสแรกของคุณ" ควรได้รับการแก้ไขเป็น "ตราบเท่าที่บล็อกสำหรับคู่ ( C, <block target>) ยังไม่มีผลบังคับใช้" นั่นคือบรรทัดที่คำสั่งบล็อกเปิดอยู่ไม่มีความเกี่ยวข้องกับการสแต็กยกเว้นว่าถ้าบล็อกถูกดำเนินการโดยตรงC= ที่อยู่คำสั่งบล็อก
COTO

1
บอทนี้น่าทึ่งมาก! มันรวมแนวคิดที่ดีที่สุดทั้งหมดไว้ในที่เดียว มันจะป้องกันตัวเองจนกว่าจะเจอศัตรูจากนั้นมันจะทำการค้างศัตรูและอัพโหลดสำเนาของตัวเองไปยังเป้าหมายก่อนที่จะปล่อยมันไปในทิศทางตรงกันข้าม ในการจำลองฉันเห็นสำเนาหนึ่งของการซ่อมแซมต้นฉบับที่เสียหาย ว้าว! เยี่ยมมาก COTO!
Wasmoo

6

โจมตีหรืออื่น ๆ

เมื่อเห็นว่าหุ่นยนต์ป้องกันอย่างไบแซนไทน์ทำได้ดีมากฉันก็ตัดสินใจสร้างหุ่นยนต์ป้องกันขึ้นมาเช่นกัน

มีสองชุดรูปแบบขึ้นอยู่กับว่ามีศัตรูอยู่หรือไม่

  • หากศัตรูไม่อยู่ก็จะบล็อกเส้นของมันเป็นเวลา 3 รอบแล้วย้าย
  • หากศัตรูมีอยู่มันจะสลับระหว่างการคัดลอกการตั้งค่าสถานะและการคัดลอกรหัสที่จะทำให้ศัตรูคัดลอกการตั้งค่าสถานะนั้น (ตัวจำลองที่อ่อนแอ)จะคัดลอกการตั้งค่าสถานะ
  • ในตอนท้ายของลูปมันจะเปลี่ยนทิศทางแบบสุ่มและดำเนินการต่อ
  • ลักษณะส่วนใหญ่ของรหัสซ้ำกัน

การทดสอบเพิ่มเติมแสดงให้เห็นถึงแนวคิดที่สำคัญบางประการ:

  • "Turn random" ทำงานได้ดีกว่า "Turn right" (+2700 ทางเลือก)
  • บล็อกการเพิ่มขึ้นของการA+7แสดงที่จะมีประสิทธิภาพมากกว่าการเพิ่มอื่น ๆ (+200 สำหรับดีที่สุดถัดไป)
  • "การโจมตีโดยตรง" แสดงว่าดีกว่า "ตัวจำลองแบบอ่อน" (+900 ทางเลือก)
  • พลังป้องกันของ "3-1-2-1" ดีกว่าชุดค่าผสมอื่น ๆ (+200 ดีกว่าอันดับถัดไป)
  • การโจมตีบล็อกและลูปโค้ดซ้ำช่วยเพิ่มคะแนน (+300 สำหรับการไม่ซ้ำซ้อน)
  • การเพิ่มบล็อกที่ซ้ำกันจะไม่เพิ่มคะแนน (+400 เมื่อทำซ้ำ)

การสังเกตการจำลองด้วยภาพกราฟิกผ่าน Java UI นั้นช่วยได้มาก ขอขอบคุณ! ด้านล่างเป็นรหัสใหม่และปรับปรุง ฉันไม่คิดว่าฉันจะทำอะไรได้มากกว่านี้

Block #C+A          //Dynamic block for If statements
If D #20 #0
If D #19 #8
If D #20 #23
If D #19 #0
If D #20 #8
If D #19 #23
Copy A+7 A          //Increment dynamic block
Block #C+A          //Dynamic block for If statements
If D #19 #8
If D #20 #0
If D #19 #8
If D #20 #23
If D #19 #8
If D #20 #0
If D #19 #23
Copy E D            //Turn Random
Copy 23 C           //Loop to beginning
Copy 23 C           //Loop to beginning
Copy #22 *#*C+1     //Copy my flag to the enemy's next
Copy #21 *#*C+1     //Copy my flag to the enemy's next
Flag
Flag
Move

บอทตัวนี้ยอดเยี่ยมมาก และยินดีต้อนรับคุณสำหรับ GUI
Nathan Merrill

ฉันได้อัปเดตให้รวมวงที่สองซึ่งปรับปรุงประสิทธิภาพอย่างมาก ฉันยังสังเกตเห็นว่าการบล็อกใน Java นั้นขึ้นอยู่กับการCบล็อกนั้นด้วย เนื่องจากบ็อตนี้มีบล็อกหมุนเวียนอยู่Cโดยจะมีการเพิ่มบล็อกหลาย ๆ คำสั่งในแต่ละคำสั่ง นั่นทำให้บอทป้องกันตัวนี้เป็นพิเศษ
Wasmoo

ความเข้าใจของฉันคือการสร้างเพียงหนึ่งบล็อกต่อคำสั่งการสร้างสามารถสร้างรหัสของคุณข้างต้นเท่านั้นสามารถสร้างบล็อกเดียวในการเรียนการสอนใด ๆ (และจะใช้เวลา 24 * 17 เต็มรูปแบบเพื่อสร้างบล็อกเดียวในทุกคำสั่ง) หากความเข้าใจของฉันไม่ถูกต้องภาษา "การบล็อกตัวแปรหลายครั้งจะบล็อกหลายครั้งตราบเท่าที่คำสั่งบล็อกที่สองอยู่ในบรรทัดที่แตกต่างจากรหัสแรกของคุณ" ใน OP ต้องได้รับการแก้ไขเนื่องจากคำสั่งนี้ (ตรงไปตรงมา) เป็นเท็จหากรหัสของ Wasmoo สามารถสร้างบล็อกจำนวนมากในการเรียนการสอนใด ๆ
COTO

@COTO: ตัวจำลอง Java เพิ่มหนึ่งบล็อกต่อIfบรรทัดในรายการโดยป้อนCตัวแปรที่เรียกว่า ดังนั้นด้วย 1 Block และ 9 ถ้าที่ดำเนินการคำสั่งบล็อกบอทสามารถรับได้มากถึง 10 บล็อกสำหรับแต่ละบรรทัด (การเลี้ยวอย่างน้อย 24 * 10 * 10 รอบ) บางที OP อาจไม่ได้ถ่ายทอดการจำลองอย่างถูกต้อง
Wasmoo

ฉันได้อัปเดตรหัสอีกครั้งเพื่อสะท้อนการปรับปรุงการทำซ้ำในขณะที่รักษาแนวคิดหลัก ฉันคิดว่าสิ่งนี้จะดีกว่าการทำให้ฟอรัมซ้ำในแต่ละครั้งเช่นการเปลี่ยนจาก Weak Replication เป็น Direct Attack และ Non-Duplicated เป็น Duplicated หากคุณต้องการให้ฉัน repost ต้นฉบับของฉันฉันสามารถทำได้
Wasmoo

5

ธ ปท

Move
If D #7 #0
If D #7 #0
If D #7 #0
If D #7 #0
If D #7 #0
Copy 0 C
If D=*D #9 #8     //If they point in a different direction
Copy *D D           //fix that
If #A==*#A #10 #11  //Did we copy line A already?
Copy A+1 A          //If so, A++
Copy #A *#A         //else, copy it!

จะเคลื่อนที่จนกว่าจะพบหุ่นยนต์
จะตั้งให้หุ่นยนต์นั้นไปในทิศทางเดียวกันกับตัวมันเอง
จากนั้นจะคัดลอกรหัสลงในหุ่นยนต์
สิ่งนี้ควรสร้างแถวของหุ่นยนต์ "Row Bot" :)


มีสองปัญหา (แก้ไขได้ง่าย) ก่อนอื่นIfงบต้องเป็นตัวพิมพ์ใหญ่ ประการที่สองไม่ควรมีช่องว่างในด้านของทั้งสองเช่น= D=*D
PhiNotPi

นี่เป็นความคิดที่ยอดเยี่ยม
Sparr

หากไม่มีธงคุณจะไม่ชนะ
Paŭlo Ebermann

3
@ PaŭloEbermannบอทเต็มไปด้วยธงมากถึง 24 บรรทัดดังนั้นบอทนี้มี 12 สถานะโดยปริยายในตอนท้าย
Sparr

5

Super Freeze

Move                    // start moving!
Block #E
If D #12 #0             // 8 turns of attack or move
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
Copy D+1 D              // change direction
Copy 0 C                // start over
If *#*C==#23 #13 #14    // if opponent is frozen, give them a flag, otherwise freeze them
Copy #C+13 *#E          // give a flag to opponent
Copy #23 *#*C           // copy freeze line to opponent
Flag                    // 8 flags, one per If above
Flag
Flag
Flag
Flag
Flag
Flag
Flag                    
Copy C+23 C             // this line freezes any bot that executes it

บอทนี้พยายามจะแช่แข็งบอทด้านหน้าต่อไปจนกว่ามันจะทำงานจากนั้นก็เขียนพวงของธงไปยังเส้นสุ่มและหลังจากนั้น 8 รอบก็จะหมุนและย้ายไปยังคู่ต่อสู้อีกคน


5

ไบเซนไทน์

บ็อตที่มีการป้องกันสูงที่สร้างบล็อคหลายอันบนธงและคำแนะนำที่ละเอียดอ่อนที่สุดรวมถึงเมตาบล็อก (เช่นบล็อกบนคำแนะนำบล็อกที่สำคัญ)

นอกจากนี้ยังเคลื่อนไหวอย่างต่อเนื่องในรูปแบบที่ไม่สามารถคาดเดาได้และวางธงในสถานที่ต่าง ๆ มากมายบนพื้นฐานของความพยายามที่ดีที่สุด

Block #A
Block #A+1
Block #A+2
Copy E D
Move
Block #A+3
Block #A+4
Move
Copy #22 *#*C+1
Copy E D
Move
Block #A+5
Block #A+6
Block #A+7
Move
Copy #22 *#23
Block #A+8
Block #A+9
Block #A+10
Copy #22 *#2
Copy A+14 A
Move
Flag
Copy #22 *#*C+12

ไม่แน่ใจว่ามันจะทำงานได้อย่างไรเพราะฉันจำลองไม่ได้ แต่เราจะให้มันยิง ;)


คำปฏิเสธ

ฉันเขียนสิ่งนี้ก่อนที่จะได้รับแจ้งจาก PhiNotPi ว่าตรรกะตามเงื่อนไขนั้นไม่มีค่าใช้จ่าย อย่างไรก็ตามฉันตัดสินใจทิ้งไว้เพราะไม่มีใครสามารถมีบอทมากเกินไป


บอทนี้ชนะ!
justhalf

4

Cadmyllion

"ฉันเพิ่งเข้าไปในบอทในสนามรบ" ฉันพูด "มันเคลื่อนที่ทุก ๆ รอบเพื่อป้องกันการโจมตีจากบอทที่ช้ากว่า"

"คุณหมายถึงอะไรโดยบอทที่ช้ากว่า" PhiNotPi ถาม

"บอตที่ติดการประเมินสายยาวของตรรกะเชิงเงื่อนไข" ฉันตอบ

"'If' statement ที่เปลี่ยนเส้นทางไปยัง statement อื่นรวมถึง statement 'if' --- ทั้งหมดจะถูกดำเนินการในเทิร์นเดียวกัน" PhiNotPi กล่าว

"กฎการสังหารหมู่หวานของรหัสแอสเซมบลี!" ฉันร้องไห้. "ใครคิดเรื่องนี้ขึ้นมา?"

... และเป็นเรื่องราวของ Cadmyllion ที่เกิดขึ้น

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

รหัส

If D #15 #19
Move
If D #16 #20
Copy D+3 D
Block #A
If D #15 #20
Copy A+1 A
If D #16 #1
Move
If D #15 #19
If D #16 #4
Copy E D
Block #A+12
Copy C+10 C
Flag
If *#0==#14 #17 #21
If *#0==#14 #18 #21
If *#*C+1==#14 #18 #22
Copy *C+11 *C
Block #A+6
Block #A+18
Copy #14 *#0
Copy #23 *#*C+1
Flag

4

Meta Insidious

บอทตัวนี้ค้างแล้วแปลงฝ่ายตรงข้ามให้กลายเป็นInsidiousรุ่นที่มีประสิทธิภาพน้อยกว่าซึ่งในทางกลับกันพวกเขาจะเปลี่ยนฝ่ายตรงข้ามให้กลายเป็นบ็อตที่สแปมตั้งค่าสถานะสำหรับฉัน นี่น่าจะเป็นบอทที่ซับซ้อนที่สุดที่ฉันเขียนและฉันคาดหวังว่ามันจะแย่มากไม่มีที่ว่างสำหรับการบล็อกและมีเพียงธงเดียวเท่านั้นที่ติดตั้งในโค้ด การเปลี่ยนบอทให้กลายเป็นโคลนที่ร้ายกาจก็ใช้เวลานานเกินไป

ความท้าทายที่ยิ่งใหญ่ที่สุดคือการเขียนโค้ดสำหรับโคลนนิ่งร้ายกาจในแบบที่มันทำงานโดยไม่คำนึงถึงตำแหน่งในบอท การแช่แข็งจะถูกลบออกเมื่อฉันวางรหัสที่สองถึงรหัสสุดท้ายที่ตำแหน่งของการแช่แข็งสิ่งนี้จะเริ่มขึ้นคู่ต่อสู้ได้ทันเวลา

If D #2 #1
Copy 23 C
Copy #8 *#*C // freeze the opponent
Copy 9 A
Copy #A *#A+*C // copy the next line at the appropriate  line
Copy A+1 A
If A==0 #7 #23
Copy 23 C
Copy C+23 C
If D #C+2 #C+23 // the code for the Insidious clone starts here
Copy C+21 C
Copy C+2 C
If D #C+6 #C+22
If D #C+5 #C+22
If D #C+4 #C+20
If D #C+3 #C+19
If D #C+2 #C+18
Copy E D
Copy #C+7 *#*C
Flag
Copy C+3 A
Copy #C+22 #A
Copy A+1 A
Copy C+21 C // And ends here

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

โคลนนิ่งที่ร้ายกาจอาจเคลื่อนไหวขึ้นอยู่กับสิ่งที่อยู่ในรหัสต้นฉบับของบอทเนื่องจากมีพื้นที่ จำกัด การใช้งานจึงต้องถูกโยนทิ้งเพื่อให้สามารถทำสิ่งนี้ได้ถึง 24 บรรทัด มันเป็นการออกกำลังกายทางใจมากกว่าสิ่งอื่นใดจริงๆ
overactor

3

ซ่อมแซมและป้องกัน

บอทนี้ทำการซ่อมแซมรหัสของตัวเองในขณะที่ปกป้องสายการซ่อมแซมใหม่

If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag
If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag
If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag

คำอธิบาย:

ค่าเริ่มต้นของAคือ0และบรรทัดจะมีหมายเลข 0-23 หากIfคำสั่งถูกดำเนินการและเป็นเท็จมันจะพยายามดำเนินการบรรทัดเดียวกันอีกครั้ง ควบคุมไม่อนุญาตให้บอทในการดำเนินการสายเดียวกันสองครั้งเพื่อเปิดจะสิ้นสุดลงและจะเพิ่มขึ้นไปC1

บรรทัดถัดไปCopy #A #A+8จะดำเนินการจริงโดยไม่คำนึงถึงมูลค่าของIfคำสั่ง ความแตกต่างคือมันจะถูกดำเนินการสองครั้งถ้าเป็นจริงและอีกครั้งถ้าเป็นเท็จ หากบรรทัด#A+8ถูกบล็อก (ซึ่งจะเกิดขึ้นในที่สุด) ให้ทำการทำสองครั้งโดยการคัดลอกจริงในขณะที่ดำเนินการเพียงครั้งเดียวจะเป็นการยกเลิกการปิดกั้นเท่านั้น จากนั้นบรรทัดที่คัดลอกใหม่จะถูกบล็อกเพื่อเก็บรักษาไว้


ฉันพยายามเข้าใจพวกคุณบอททุกคน แต่ฉันติดอยู่ ค่าเริ่มต้นAคืออะไร? ไม่ใช่0เหรอ ถ้าเป็นเช่นนั้นแล้วบรรทัดแรกของคุณเปรียบเทียบบรรทัด 0 กับบรรทัดที่ 16 แต่อย่างที่ฉันเข้าใจจากตัวอย่างบ็อต OP บรรทัดแรกคือบรรทัดที่ 1 ใช่ไหม ยิ่งไปกว่านั้นยังอยู่ในบรรทัดแรกของคุณ#Cอ้างถึงบรรทัดนี้มากดังนั้นหมายความว่าถ้าIfคำสั่งกลับเท็จคุณติดอยู่ในวงวนไม่รู้จบ?
plannapus

@plannapus ฉันได้เพิ่มคำอธิบายบางอย่าง
PhiNotPi

3

neutralizer

บอทนี้ทำให้เหยื่อของมันเขียนซ้ำทั้งโปรแกรมทำให้มีค่า 0 คะแนน เมื่อไวรัสเข้าสู่ตำแหน่งมันจะดำเนินต่อไป นี่เป็นแนวทางที่แผดเผาสู่ชัยชนะ

If D #C+2 #C+3          // A: If [enemy exists] B else C
Copy C+22 C             // GOTO A
If *#*C==#7 #C+4 #C+5   // B: If [enemy was neutralized] D else E
Move                    // C: Move
Copy E D                // D: Turn Randomly
Copy #7 *#*C            // E: Neutralize enemy
Copy C+1 C              // Skip the next line
Copy #C #C+1            // Neutralizing Code [Copy this line to next line]

*#*C==#7ดูเหมือนว่าการเปรียบเทียบจะไม่ถูกปรับให้เข้ากับการเปลี่ยนแปลงของคู่ต่อสู้อย่างถูกต้อง แต่ในที่สุดบอทก็จะเดินหน้าต่อไป


Copy C+1 Cเป็นสิ่งที่จำเป็นในการข้ามบรรทัดเดียว
Nathan Merrill

2
'ข้ามบรรทัดถัดไป' หมายความว่าบ็อตของคุณจะใช้เวลา 16 รอบในการดำเนินการคำแนะนำการตั้งค่าสถานะก่อนดำเนินการต่อ คุณอาจต้องการไปที่Copy 23 Cนั่นแทนเพื่อข้ามกลับไปที่บรรทัดแรก
SPARR

'ข้ามบรรทัดถัดไป' จะเกิดขึ้นเฉพาะเมื่อมีการเขียนทับ 'GOTO A' มีวิธีอื่นที่ฉันสามารถทำให้บอตนี้เป็นที่น่ารังเกียจและป้องกันได้มากขึ้นเช่นการทำซ้ำ 'A' การทำซ้ำโค้ดและการบล็อก 'GOTO A' อย่างไรก็ตามถ้าบอตนี้ถูกโจมตีมันก็ตายไปแล้ว
Wasmoo

3

ร้ายกาจ

Move
If D #4 #0
If D #4 #0
Copy 0 C
Copy 4 C
If D #12 #11
If D #12 #11
If D #12 #11
If D #12 #11
If D #12 #11
Copy D+1 D
If D #4 #3
Copy #C+8 *#*C
Flag
Copy C A
Copy #C+22 #A
Copy A+23 A
Copy C+21 C

ได้รับแรงบันดาลใจจาก @Cruncher บ็อตนี้จะติดบอทอื่น ๆ ด้วยโค้ดขนาดเล็กเติมบอทอื่นด้วยแฟล็กบอทนี้ บอทเหล่านั้นกำลังนั่งเป็ดเพื่อโจมตีต่อไป แต่ส่วนใหญ่จะเต็มไปด้วยธงของฉันเมื่อพวกเขาได้รับเชื้อจากคนอื่น

แก้ไข: ขอบคุณ @PhiNotPi สำหรับความช่วยเหลือเกี่ยวกับกอล์ฟ @overactor สำหรับคำแนะนำด้านประสิทธิภาพ


ขอแสดงความยินดีกับการกดปุ่ม 2k!
bjb568

3

มีความสุขเหมือนหอย

นี่คือแบบฝึกหัดในการปิดกั้น มันทำงานได้ดีอย่างน่าทึ่งจนกระทั่ง$Copyมาถึงรอบ

หอยมี 22 คำสั่งบล็อก เนื่องจากAมีการเลื่อนทุกลูปพวกเขาจะอ้างอิงบรรทัดต่าง ๆ ในแต่ละครั้งผ่านลูป สิ่งนี้อนุญาตให้แต่ละคำสั่งเพื่อสแต็กบล็อกบนบรรทัดอื่น ๆ ซึ่งมีขนาดสูงสุดที่ 22 บล็อกต่อบรรทัด ดังนั้นในการทำลายเกราะหุ้มเกราะอย่างสมบูรณ์เราจะต้องเขียนลงในบรรทัดที่ 22 ครั้ง

ตัวอย่างเช่น#10จะได้รับการคุ้มครองในแต่ละครั้งผ่านลูปโดยบรรทัดต่อไปนี้:

  • วน 0, A = 0 #10ป้องกันโดยบรรทัด 7 ( 7+0+3= 10)
  • วน 1, A = 7 #10ป้องกันโดยบรรทัด 0 ( 0+7+3= 10)
  • วนรอบ 2, A = 14 #10ป้องกันโดยบรรทัด 17 ( 17+14+3= 34 = 10)
  • วน 3, A = 21 #10ป้องกันโดยบรรทัด 10 ( 10+21+3= 34 = 10)

ดังนั้นหลังจาก Line 10 ของ Loop 3 #10ถูกบล็อก 4 ครั้งต้องการให้ 4 การเขียน#10เพื่อแบ่งบล็อกโดยที่ 5 จะเขียนทับบรรทัด

โปรดทราบว่าการบล็อกจะถูกคีย์โดยCค่าของพวกเขาและจะไม่สแต็คหากบรรทัดที่มีการป้องกันถูกบล็อกโดยCค่าเดียวกัน ดังนั้นหลังจาก 22 บล็อกถูกสร้างขึ้นสำหรับแต่ละบรรทัดบล็อกจะไม่สแต็คอีกต่อไป

Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Copy A+7 A
Flag

3

MindControl

ฉันเดาว่ามันจะไม่สายเกินไปเหรอ?

Block #C+D
If D #2 #0        // Scan for enemy
If *#E==#E #0 #5  // Attack if necessary
Copy D+5 D        // Turn
Copy 22+1 C       // Repeat
Copy 4+1 C        // ATTACK:
Copy #22+1 *#*C   //   Freeze
Copy #17 *#17     //   Upload the DOWNLOADER
Copy #18 *#18     //
Copy #21 *#19     //
Copy D+2 *D       //   FACE ME!!
Copy 17 *C        //   Start download
If E #0 #13
If E #0 #13
Copy 22+1 C
Flag
Flag
Copy *#B+20 #B+20         // DOWNLOADER
If *#B+20==#B+20 *#20 #19 //
Copy 22+1 C               //
Copy 1+B B                //
Copy 16 C                 //
Flag
Copy 23+C C        // FREEZE

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

เมื่อพบศัตรู MindControl จะหยุดศัตรูทันทีเพื่อป้องกันการหลบหนี จากนั้นจะอัพโหลดตัวดาวน์โหลดไปยังคู่ต่อสู้และปล่อยให้เหยื่อดาวน์โหลดโปรแกรมของ MindControl ตัวดาวน์โหลดใช้ประโยชน์จากความจริงที่บอทใช้น้อยBและจะวนซ้ำจนกว่ามันจะดาวน์โหลดทั้ง 24 บรรทัด เมื่อผู้ดาวน์โหลดเขียนใหม่#19จากCopy 16 CถึงCopy 23 Cจะเป็นการระบุว่าเหยื่อได้ดาวน์โหลดทุกบรรทัดแล้วและจะทำการรีบูทเอง

บอทรุ่นแรกของฉันไม่มีบล็อค และมันก็เปราะบางมากที่การเปลี่ยนแปลงเกือบจะทำให้หมดอำนาจ ดังนั้นฉันจึงตัดสินใจเพิ่มบล็อกตาม $ Copy ของ Wasmoo (ซึ่งเป็นไปตาม Lockheed ของ COTO) ข้อเสียที่ฉันพบคือมันยากสำหรับต้นฉบับที่จะแก้ไขข้อผิดพลาดในสำเนา แต่มันก็ยังห่างไกลจากความพิการและคะแนนเพิ่มขึ้นอย่างมากดังนั้นฉันจึงเก็บบล็อกไว้

การปรับปรุง

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


การปรับปรุงอื่น อย่างที่คุณอาจสังเกตเห็น MindControl ตัดสินใจว่าจะโจมตีเป้าหมายโดยการเปรียบเทียบเส้นสุ่มระหว่างตัวมันเองกับเป้าหมาย หากพวกเขาตรงกัน MindControl ก็ถือว่าเป้าหมายนั้นติดเชื้อแล้วและปล่อยให้มันอยู่คนเดียว (หมายเหตุด้านข้าง: ฉันเคยใช้สายคงที่สำหรับการเปรียบเทียบ แต่มันให้ผลบวกและลบที่ผิด ๆ จำนวนมาก) ปรากฎว่าให้ผลเชิงลบจำนวนมาก ดังนั้นผมจึงตัดสินใจที่จะใช้ประโยชน์==และทำการเปลี่ยนแปลงเล็ก ๆ น้อย ๆ บางอย่างเช่นการC+23 23+Cโปรแกรมมีฟังก์ชั่นเหมือนกัน แต่แตกต่างกันในสายตาของ==แต่แตกต่างกันในสายตาของ ตอนนี้ MindControl ไม่มีบรรทัดที่เหมือนกับบรรทัดใด ๆ ในบ็อตอื่น ๆ ก็จะสามารถเข้าถึงบอทที่ไม่มีการแตะใด ๆ ได้ 100% อีกครั้งคะแนนเพิ่มขึ้นอย่างมีนัยสำคัญ


ปรับปรุง Downloader อีกครั้ง ตอนนี้มันจะวนรอบสั้นกว่า (ซึ่งดูเหมือนจะมีความสัมพันธ์กับคะแนนของฉัน)


ปรับปรุง Downloader อีกครั้ง ใช้รหัสบอตดั้งเดิมเพื่ออัปโหลดเร็วขึ้น เพิ่มบล็อกสุ่ม 2 อันซึ่งดูเหมือนว่าจะปรับปรุงคะแนน


มันไม่สายเกินไป!
Nathan Merrill

ฉันกำลังพิจารณาเปลี่ยนชื่อเป็น BrainWash ...
TwiNight

หรือ BunkerBuster หลังจากดูการดาวน์โหลดผ่านHappyAsAClam the bunker
TwiNight

ฉันเคยลองใช้ความคิดนี้ในการอัปโหลดตัวดาวน์โหลดก่อน แต่ฉันไม่สามารถทำให้มันเล็กอย่างที่คุณคิดได้ เยี่ยมมาก! ฉันชอบที่คุณใช้ D เป็นเดลต้าบล็อกการท่องเที่ยว มันบันทึกคำสั่งและเพิ่มความเร็วในการออกแบบของคุณ ฉันประหลาดใจที่บอทที่ไม่มีคำสั่ง 'ย้าย' จะทำงานได้ดี การจำลองแสดงบอทมีแนวโน้มที่จะรวมตัวกัน แต่ฉันไม่รู้ว่ามันจะเป็นกลยุทธ์ที่ชนะ และฉันเห็นด้วยมีบางอย่างที่น่าพอใจโดยเฉพาะเกี่ยวกับการทำลายหอย
Wasmoo

@Wasmoo เห็นได้ชัดว่าการออกแบบดาวน์โหลดต้องการบอทที่จะอยู่กับที่และมันจะทำให้บอทกอ ฉันชอบคิดว่ามันเป็นรากของต้นไม้ที่ยื่นออกไปและดูดซึมบอทอื่น ๆ เพื่อที่จะเติบโต แต่ฉันเดาว่าความว่องไวคือเหตุผลที่ $ Copy และ Lockheed เอาชนะฉัน
TwiNight

2

โจมตี

Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Flag

2

Movebot

Move
Copy 23 C
Flag

เช่นเดียวกับ Flagbot แต่ย้ายไปรอบ ๆ ในขณะที่รับรหัสของขวัญเพื่อไปกับธงทั้งหมดของเรา


2

ทำซ้ำบอท

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

If D #23 #22
Copy 23 C
Copy #18 *#*C
Copy #18 *#*C+1
Copy #18 *#*C
Copy #18 *#0
Copy #18 *#0
Copy 0 *C
Copy 0 *C
Copy 1 A
Copy #A *#*A
If D #12 #14
Copy A+1 A
Copy 9 C
Copy 23 C
Flag
Flag
Flag
Copy C+23 C
Copy D+1 D
Flag
If *#*C==#*C #19 #13
Move
If *#*C+1==#*C+1 #21 #13

ไม่มีที่ว่างในสภาพ
Nathan Merrill

@NathanMerrill gotcha
overactor

2

หมอผี

Magus เป็นความพยายามอย่างง่าย ๆ ที่ไวรัสแพร่กระจายตัวเอง มันพยายามที่จะคัดลอกตัวเองลงในโปรแกรมของบอทอื่น ๆ (แก้ไขเพื่อลบตัวเลขลบ, แก้ไขเงื่อนไข, ตัดขอบ)

Block #A
Copy #A *#A
Copy A+1 A
If A #0 #4
Copy 0 *C
Flag
Move
Copy 0 C

ไม่อนุญาตให้ใช้ค่าลบ โปรดใช้ 23 สำหรับ B
นาธานเมอร์ริลล์

โปรดใช้ 23 ไม่ใช่ 25
นาธานเมอร์ริลล์

หากฉันไม่เข้าใจผิดว่าจะทำให้ไม่บล็อกหรือคัดลอกบรรทัดที่ 23 หรือ 24 (หมายเหตุ: มันเปลี่ยนไปเล็กน้อยจากการแก้ไขครั้งแรก A จะเพิ่มขึ้นทีละ 1 ไม่ใช่ B)
ไอแซค

+0 = 24 +1 = 25, -1 = 23 ถ้าคุณต้องการให้เป็น -1 ก็ควรเป็น 23
นาธานเมอร์ริลล์

นั่นเป็นวิธีก่อนหน้านี้เพราะฉันคิดว่าคุณสามารถเปรียบเทียบกับ 0 เท่านั้น (พลาดส่วน '=' อย่างใดฉันตำหนิการ skimming) แต่มันเปลี่ยนไปตอนนี้ A เริ่มต้นที่ 1 และสิ้นสุดที่ 25 ลองจินตนาการบรรทัดที่ 3 เป็นfor (int i = 1; i < 25; i++).. .
ไอแซค

1

DNAbot

Flag
Copy 8 D
Copy 16 B
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Copy #23 *#*C
Copy A+1 A
Copy B+1 B
Copy D+1 D
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Move
Copy A+1 A
Copy B+1 B
Copy D+1 D
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Flag

บอทนี้ทำการซ่อมแซมรหัสของตัวเองในขณะเคลื่อนที่และโจมตี




1

ช่องแช่แข็งด่วน

พยายามที่จะคัดลอกธงในบรรทัดที่จะได้รับการประหารชีวิตต่อจากฝ่ายตรงข้ามของเขาย้ายถ้าไม่มีศัตรูที่จะโจมตี

Block #13
Block #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14   
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14   
Copy 23 C
If E #15 #16
Move
Copy #23 *#*C
Copy D+1 D

สองบรรทัดแรกไม่ถูกต้อง พวกเขาต้องการ # 13 และ # 14
Nathan Merrill

1

Block, Freeze, Attack

Block #A        // start block loop
Copy A+1 A      // loop A from 0 to 23
If A #3 #4      
Copy 23 C       // repeat block loop
Copy 5 C        // exit block loop to attack/move loop
Move
If D #11 #5     // attack or move
Copy A+1 A      // loop A from 0 to 23
If A #9 #10
Copy 5 C        // repeat attack/move loop
Copy 23 C       // exit attack/move loop to block loop
Copy 11 C       // start of attack routine
Copy #23 *#*C   // freeze opponent
Copy #19 *#E    // copy flag to opponent
Copy #20 *#E    // copy flag to opponent
Copy #21 *#E    // copy flag to opponent
Copy #22 *#E    // copy flag to opponent
Copy D+1 D      // change direction
Copy 5 C        // repeat attack/move loop
Flag
Flag
Flag
Flag
Copy C+23 C     // freeze instruction, for copying

บล็อกทั้งหมด 24 บรรทัดจากนั้นวนซ้ำ 24 ครั้งทั้งการเคลื่อนไหวหรือการโจมตีจากนั้นทำซ้ำ การโจมตีเกี่ยวข้องกับการพยายามตรึงคู่ต่อสู้จากนั้นคัดลอกธงสี่ธงไปยังตำแหน่งสุ่มจากนั้นหมุน


1

ซ่อนบล็อคโจมตี

บอทนี้มีพื้นฐานมาจาก Block Freeze Attack ฉันเปลี่ยนการจัดวางIfข้อความบางส่วนเพื่อให้มีขนาดกะทัดรัดยิ่งขึ้นทำให้ฉันสามารถสร้างแฟล็กได้มากขึ้น ฉันยังต้องวิ่งหนีไปตอนเริ่มเกมเพื่อซื้อเวลาบล็อก

Copy D+1 D
Move           //buy some time by moving to a more secure location
Block #A+2
Copy A+1 A
If A #11 #17
Copy #23 *#E
Copy #22 *#E
Copy #21 *#E
Copy #20 *#E
Copy #19 *#E
Copy D+1 D
Copy 1 C
Move
If D #14 #15
Copy 3 C
Copy 11 C
Copy #18 *#*C
If D #16 #15
Copy C+23 C
Flag
Flag
Flag
Flag
Flag

1

ไวรัสการท่องเที่ยว

If D #6 #16
Move
Copy 23 C
Flag
Flag
Flag
Copy 6 C
Copy A+23 A
Copy #A *#A                     //clone previous line to enemy
Copy 23 *C                      //freeze enemy
If A #6 #16                     //loop or turn then continue
Copy 0 *C                       //reboot enemy
Copy 23 C                       //start moving again
Flag
Flag
Flag
Copy D+1 D                      //turn
Flag
Flag
Flag
Flag
Flag
Flag
Copy 22 C                       //freeze instruction

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


1

โรคไข้หวัด

มันจะแพร่เชื้อสู่คุณทันทีและคุณจะแพร่กระจายไปทั่ว จากParasite ของ PhiNotPiการตรวจสอบหวัดทั่วไปเกือบจะในทันทีหากสามารถคัดลอกการตั้งค่าสถานะของคุณได้ บล็อกค่าสุ่มหากไม่สามารถทำได้ เคลื่อนที่ไปรอบ ๆ เล็กน้อยหากไม่มีฝ่ายตรงข้าม

Block #22
If D #8 #5
If D #8 #5
If D #8 #5
Copy 23 C
If E #6 #7
Copy D+1 D
Move
If *#E=#22 #15 #9
If *#E+1=#22 #16 #10
If *#E+2=#22 #17 #11
If *#E+3=#22 #18 #12
If *#E+4=#22 #19 #13
If *#E+5=#22 #20 #14
If *#E+6=#22 #21 #23
Copy #22 *#E
Copy #22 *#E+1
Copy #22 *#E+2
Copy #22 *#E+3
Copy #22 *#E+4
Copy #22 *#E+5
Copy #22 *#E+6
Flag
Block #E

1

ไข้หวัดใหญ่

นี่เป็นพื้นฐานอย่างใกล้ชิดของ Common Cold (ซึ่งเป็นพื้นฐานของ Parasite ของฉัน) ด้วยความเร็วที่เพิ่มขึ้นเล็กน้อย

Move
Block #23
If D #8 #0
If D #8 #0
If D #8 #0
If D #8 #7
Copy 0 C
Copy D+1 D
If *#E #9 #10
Copy #23 *#E
If *#E+1 #11 #12
Copy #23 *#E+1
If *#E+2 #13 #14
Copy #23 *#E+2
If *#E+3 #15 #16
Copy #23 *#E+3
If *#E+4 #17 #18
Copy #23 *#E+4
If *#E+5 #19 #20
Copy #23 *#E+5
If *#E+6 #21 #22
Copy #23 *#E+6
Block #E
Flag

ฉันหวังว่าจะเห็นความแตกต่างที่จะเกิดขึ้น # 5 ในบรรทัดที่ 5 จะกระตุ้นการวนซ้ำไม่สิ้นสุดและ # 7 เหล่านั้นก็ไม่น่าจะเป็นสิ่งที่คุณตั้งใจ
overactor

@overactor ขอบคุณนั่นเป็นข้อผิดพลาดที่สร้างขึ้นโดยการเพิ่มในบรรทัดพิเศษ
PhiNotPi

ฉันเคยรู้จักความเจ็บปวดไหม
overactor

1

rebranding

Move
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
Copy 0 C
If *#E=#14 #11 #9
If *#E==#14 #13 #12
Copy D+1 D
Copy #14 *#E
Flag

บอทนี้พยายามที่จะหาตำแหน่งของธงในบอทของศัตรูและแทนที่ด้วยธงที่เป็นมิตรหันหลังให้กับการตรวจจับความสำเร็จ แรงบันดาลใจจาก Cancer bot

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