บรรทัด R code ที่น่าเกลียดที่สุดที่ยังแยกวิเคราะห์อยู่คืออะไร?


19

เป้าหมายคือการสร้างรหัส R บรรทัดเดียวที่:

  1. ทำน้อยที่สุดเท่าที่จะทำได้
  2. ในตัวละครให้ได้มากที่สุด (สูงสุด 100 ตัวอักษร)
  3. และน่าเกลียดที่สุดเท่าที่จะเป็นไปได้ (โดยที่ "น่าเกลียด" สามารถใช้เพื่อหมายถึงกลยุทธ์การคำนวณที่ไม่มีประสิทธิภาพตัวละครภายนอกเช่นเซมิโคลอนที่ยุติและอื่น ๆ )

ทำเลวร้ายที่สุดของคุณสุภาพบุรุษ!

เกณฑ์วัตถุประสงค์ในการชนะ

คำตอบที่ชนะจะได้รับการตัดสินตามระดับคะแนนต่อไปนี้ (คำตอบที่มีคะแนนมากที่สุดชนะ):

  • สร้างลำดับจาก 0 ถึง 10 ( 100 คะแนน)
  • ในตัวละคร (N) ให้ได้มากที่สุด
    • 0 คะแนนถ้า N = 100
    • N-100 คะแนนถ้า N <100 (เช่นเสียคะแนนสำหรับตัวละครทุกตัวต่ำกว่า 100)
    • 2 (100-N) คะแนนถ้า N> 100 (เช่นเสียสองคะแนนสำหรับตัวละครทุกตัวที่เกิน 100)
  • ใช้ตัวอย่างเชิงลบจำนวนมากจากR Infernoให้ได้
    • 6 คะแนนต่อตัวอย่างที่อ้างถึง
    • ตัวอย่างแต่ละตัวจะนับเพียงครั้งเดียว นี่เป็นเช่นนั้นเพราะ "คนนอกศาสนาที่ถูกจองจำในสุสานเพลิง [[]] สามารถถูกขังได้เพียงครั้งเดียวเท่านั้น ดังนั้นการมอบหมายระดับโลกสองรายการในบรรทัดรหัสของคุณจะให้คุณสุทธิ 6 คะแนนเท่านั้น

ไม่ใช่เกณฑ์การชนะอย่างมีวัตถุประสงค์ ดูคำถามที่พบบ่อย
dmckee

4
คำถามที่พบบ่อย @dmckee :) เกณฑ์มีวัตถุประสงค์สวย
Tomas

ฉันพยายามทำให้เกณฑ์ชัดเจนยิ่งขึ้น หากเกณฑ์ 3 ยังไม่เป็นเป้าหมายมากพอฉันสามารถกำจัดมันได้แม้ว่าฉันจะชอบ
Ari B. Friedman

ฉันไม่เข้าใจระบบการให้คะแนนใหม่เลย วัตถุประสงค์ 2 จะต้องยาวที่สุดเท่าที่จะเป็นไปได้ (ภายใต้ความยาวไม่เกิน 100 ตัวอักษร) และคุณให้คะแนนน้อยลงเมื่อใกล้ถึง 100 (และระบุคะแนนสำหรับโปรแกรมที่ยาวกว่า 100 ??!) วัตถุประสงค์ 3 คือจะน่าเกลียดเท่าที่จะทำได้และคุณให้คะแนนเพิ่มเติมสำหรับโปรแกรมที่น่าเกลียด ดังนั้นคะแนนควรจะดีหรือไม่ดี!
Peter Taylor

@PeterTaylor แก้ไขเพื่อชี้ให้เห็นว่าทั้งสองวัตถุประสงค์ # 2 สูตรสร้างจุดลบ คะแนนดี: "คำตอบที่ได้คะแนนมากที่สุดเป็นผู้ชนะ"
Ari B. Friedman

คำตอบ:


25

72 96 ตัวละคร

`c`<-function(...){list(...)[[-1]];}->>`c`;`[`=0;`]`=10;c(c,c)(c,c)(c,invisible)(`[`[]:`]`[])[];

ความอัปลักษณ์:

  • การใช้ชื่อฟังก์ชันมาตรฐานซ้ำ
  • การใช้สัญลักษณ์เป็นชื่อตัวแปร
  • การมอบหมายระดับโลก
  • การมอบหมายที่ถูกต้อง
  • ฟังก์ชั่นนิยามใหม่ของตนเอง
  • เซมิโคลอนต่อท้ายที่ไม่จำเป็น
  • หมายเลขสคริปต์ย่อยที่ไม่จำเป็น
  • การอ้างชื่อตัวแปรที่ไม่จำเป็น
  • ออกจากเวิร์กสเปซในสถานะซึ่งจะทำให้การเรียกใช้โค้ดในภายหลัง

สร้างลำดับ 0-10 (ขอบคุณ Andrie สำหรับแนวคิดที่จะทำ)

เอาท์พุท:

 [1]  0  1  2  3  4  5  6  7  8  9 10

4
นั่นคือวิกลจริตอย่างแท้จริง นี่เป็นครั้งแรกที่ฉันใช้คำนั้นเป็นคำชม ในทางกลับกันมันเป็นงานที่ยอดเยี่ยมสำหรับคนที่จะทำให้งงงวยและเรียนรู้จากการวิจารณ์อย่างระมัดระวัง การทำงานที่ดี.
Iterator

สุกใส ด้านบนของหัวของฉันตัวเลขความอัปลักษณ์ 3,4,5,8,9 อยู่ในนรก นั่นคือ 96 + 6 * 5 = 126 คะแนนตามเกณฑ์การให้คะแนน
Ari B. Friedman

ทางออกที่ยอดเยี่ยม เพิ่มความอัปลักษณ์อีกหนึ่ง + 100 ถ่าน แทนที่ "ทั้งหมดด้วยเครื่องหมายคำพูดเดี่ยวมีปัญหาการฝัง"<-"("c",function(...){list(...)[[-1]];}->>"c");"["=0;"]"=10;c(c,c)(c,c)(c,invisible)("["[]:"]"[])[]
Vlo

7

สร้างลำดับจาก 0 ถึง 10

100 ตัวอักษร

{.=0;for(`~1` in c(1,2,3,4,5,6,7,8,9,10)){.=c(., `~1`,recursive=F)};print(unname(.[drop=T]));rm(.)}
 [1]  0  1  2  3  4  5  6  7  8  9 10

5

100 ตัวอักษร: สร้างลำดับจาก 1 ถึง 10

โปรดทราบว่าตัวเลข 2-10 ไม่อยู่ในรหัส ... - คะแนนโบนัส? :-)

โปรดทราบด้วยว่ามันใช้lapplyเพื่อประสิทธิภาพสูงสุด :)

unlist(lapply(LETTERS[-(11:26)],function(x) as.integer(charToRaw(x))-as.integer(charToRaw('A'))+1L))
#[1]  1  2  3  4  5  6  7  8  9 10 

2

100 ตัวอักษร

assign("a",1:10);b<<-paste(c(a),collapse=";");unlist(lapply(strsplit(b,";")[[1]],function(c)c[[1]]))

ไม่แน่ใจว่าถ้าlapplyon strsplitเป็นตัวอย่างเชิงลบ แต่ควรแน่ใจ

ส่งคืนเป็นอักขระ:

 [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"

1
I(cumsum(Reduce("sum", replicate(paste0(as.integer(T),as.integer(T)), T), accumulate=1-F) - T >0))

ควรมีน้อยกว่า 100 ตัวอักษรเล็กน้อยและอาจสร้าง 0:10


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