คุณรู้ภาษานั้นไหม


34

งาน:

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

สมมติว่าโปรแกรมแรกอยู่ใน Ruby จะต้องส่งออก1เพราะทับทิมเป็น1ภาษาที่ใช้ในการท้าทายนี้ ตัวอย่างโปรแกรมคือ:

a=gets
puts 1

เมื่อได้รับตัวเองเป็น input 1ก็จะส่งกลับ

โปรแกรมถัดไปอาจเป็น Python มันจะต้องออก2เพราะ Python เป็น2ภาษาที่ใช้ในการท้าทาย ตัวอย่างโปรแกรมคือ:

print(1 if input()[0]=="a"else 2)

ได้รับการส่งครั้งแรกมันจะออกผลลัพธ์และให้ตัวเองมันเอาท์พุท12

คุณได้รับอนุญาตให้พูดภาษาซ้ำแม้ว่าคุณจะไม่ได้รับอนุญาตให้ส่งคำตอบในภาษาของคำตอบก่อนหน้า

ตัวอย่างเช่นถ้าโปรแกรมของ บริษัท อยู่ในทับทิมนั้นจะต้องส่งออก1ได้รับโปรแกรมแรกและตัวเอง (เพราะทับทิมเป็น1ภาษา ST ใช้) 2และได้รับโปรแกรมที่สองมันต้องเอาท์พุท


กฎ:

  • หากมีnคำตอบในการท้าทายในปัจจุบันจะต้องมีfloor(n / 3)ภาษาที่แตกต่างกันอย่างน้อย การส่งใด ๆ ที่ละเมิดกฎนี้จะถูกตัดสิทธิ์
  • ไม่มี "คำตอบใกล้เคียง" สองคำ (เช่นคำตอบnและคำตอบn+1) ไม่สามารถใช้ภาษาเดียวกันได้
  • รุ่นที่แตกต่างของภาษาไม่นับเป็นภาษาที่แตกต่างกัน (เพื่อPython 2 == Python 3)
  • คำตอบต้องใช้การส่งก่อนหน้าเต็มรูปแบบเป็นอินพุต
  • การส่งครั้งแรกจะต้องป้อนข้อมูล
  • คุณไม่ได้รับอนุญาตให้ส่งคำตอบหลายคำในหนึ่งแถว
  • "คำตอบซ้ำ" (คำตอบที่มีรหัสเดียวกันกับการส่งครั้งก่อน) ไม่ได้รับอนุญาต
  • คำตอบไม่ได้รับอนุญาตให้ผ่านการนับไบต์ที่จัดสรรของคำตอบนั้น - ดู "การจัดสรรไบต์นับ" สำหรับรายละเอียดเพิ่มเติม

จำนวนไบต์ที่จัดสรร:

สำหรับหมายเลขแต่ละคำตอบที่ได้รับการจัดสรรไบต์นับสำหรับคำตอบที่เป็นn45 + 5n


การจัดรูปแบบคำตอบ:

จัดรูปแบบคำตอบของคุณดังนี้:

# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}

สำหรับรายการคำตอบให้ทำสิ่งนี้:

- `1` in answers [1]({link to answer}), [3]({link to answer})...

เกณฑ์การให้คะแนน:

คำตอบแรกเพื่อความอยู่รอดหลังจาก 7 วันโดยไม่มีการส่งใด ๆ ที่ถูกต้องหลังจากนั้นจะมีการประกาศผู้ชนะ


1
ผู้ใช้รายหนึ่งสามารถโพสต์การส่งติดต่อกันสองครั้งติดต่อกันได้หรือไม่
Kritixi Lithos

ดังนั้นในขณะที่ยืนอยู่ฉันสามารถทำซ้ำได้เหมือนเดิมโดยไม่มีการเปลี่ยนแปลงใด ๆ คำตอบของฉัน n ° 6 เป็นคำตอบ n ° 8 หลังจากนั้นมาร์ตินสามารถทำซ้ำหมายเลขของเขา n ° 7 (เว้นแต่ว่าฉันเข้าใจผิด) เป็นต้น 15 ก่อนถึงเกณฑ์ที่กำหนด (เช่นfloor(n / 3)ภาษา) ฉันเดาว่านี่ไม่ใช่พฤติกรรมที่ตั้งใจ
plannapus

@plannapus ฉันสังเกตเห็นสิ่งนี้เช่นกัน แน่นอนเป้าหมายของคุณคือการได้คำตอบสุดท้ายดังนั้นการรู้ว่าฉันจะมีการติดตามผลเล็กน้อยคุณอาจต้องการทำสิ่งที่ซับซ้อน (ซึ่งฉันไม่ได้คิดมาก่อนโพสต์คำตอบของฉันเอง)
Martin Ender

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

2
IMO ขีด จำกัด คงที่ที่สมเหตุสมผล (เช่น 384 หรือ 256 ไบต์) จะทำงานได้ดีขึ้นและจะทำให้การแข่งขันแน่นในตอนท้าย
เรือเหาะ

คำตอบ:


4

26. > <> (ภาษา 12), 164 ไบต์

โปรแกรมแรกของฉันใน> <>! มีอักขระ 156 ตัว แต่เป็น 164 ไบต์ใน UTF-8

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
{:}&1+&=?v
      .&0/
v+!?='>'i41i
v+?='y'i47
v+?=' 'i12
v+?=' 'i24
v4
v6
v7
v8
v9
va
  v?(0:i
v1
n;\b1laa*)?+
/"^mwfPes{'tc"i2&01.;

ภาพพิมพ์นี้:

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6พร้อมคำตอบ10 , 17 , 20 , 22และ25 (Bash)

  • 7ด้วยคำตอบ11และ19 (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10ด้วยคำตอบ18 , 21และ23 (C / C ++)

  • 11ด้วยคำตอบ24 (Zsh)

  • 12 ด้วยคำตอบนี้ (> <>)

ลองออนไลน์!

คำอธิบาย:

บรรทัดแรกตอบเพียง # 5 มันไม่ทำอะไรเลยนอกจากส่งตัวชี้คำสั่งไปยังบรรทัดล่างสุด /หมุนปลาไปทางขวาและอักขระ^mwfPes{'tcจะถูกวางลงบนสแต็ก อ่านอักขระเดียวของอินพุต ( i) (ลองเรียกตัวละครนี้Cเพื่ออธิบาย) 2 ใส่ไว้ใน register ( 2&) จากนั้นเราข้ามไปที่จุดเริ่มต้นของบรรทัดที่สอง (บรรทัดที่ 1) ( 01.)

บรรทัดนี้เปรียบเทียบCกับอักขระแต่ละตัวในสแต็ก สำเนาของCจะถูกเก็บไว้ที่ด้านล่างของสแต็ค {หมุนสแต็กให้Cอยู่ด้านบน :ซ้ำซ้อน; }หมุนสำเนากลับไปที่ด้านล่าง เราเพิ่มการลงทะเบียน ( &1+&) จนกระทั่งพบการแข่งขัน (ดังนั้นถ้าCเป็น "c" การลงทะเบียนจะถือ 3 เมื่อพบการแข่งขันถ้าCเป็น "t" การลงทะเบียนถือ 4 และอื่น ๆ ) จากนั้นเราจะข้ามไปที่ตัวอักษรตัวแรกของหมายเลขบรรทัดในการลงทะเบียน ( 0&.) .

บรรทัดที่ 3 ถึง 13 จัดการกับสิ่งที่ต้องทำเมื่อCเป็น c, t, ', {, ฯลฯ ตามลำดับ ตัวชี้คำสั่งนั้นเคลื่อนที่ไปข้างหลังเมื่อเรากระโดด มันลงจอดบนอักขระตัวแรกของบรรทัดที่กำหนด แต่หลังจากการกระโดดมันจะเลื่อนติ๊กก่อนที่จะดำเนินการดังนั้นจึงเริ่มดำเนินการจากจุดสิ้นสุดของบรรทัดที่ย้อนกลับ แต่ละบรรทัดผลักหมายเลขภาษาที่เหมาะสมลงบนสแต็กจากนั้นส่งปลาลงไปยังnคำสั่งที่พิมพ์ออกมา

^เป็นกรณีที่ซับซ้อนที่สุดเพราะความขี้ขลาดของตัวเองด้วยบรรทัดแรกของคำตอบนี้ บรรทัดที่ 13 อ่านอินพุตจนกว่า EOF จากนั้นจะนำไปสู่บรรทัดที่ 15 ซึ่งเปรียบเทียบความยาวของสแต็ก ( l) ถึง 100 ( aa*) หากยาวกว่า)?นี้เราจะเพิ่ม+ bและ1รับ 12 ภาษานี้ มิเช่นนั้น 1 จะอยู่ด้านบนสุดของสแต็ก


23

1. จอประสาทตา 0 ไบต์

ลองออนไลน์!

โปรแกรมที่ว่างเปล่าจะพิมพ์1เมื่อได้รับอินพุตว่าง (เช่นตัวเอง) เพราะมันนับความถี่ที่ว่างเปล่า regex ตรงกับอินพุต (ซึ่งเป็นเสมอ1+length(input))


12

2. Brain-Flakขนาด 22 ไบต์

{<>(())(<>)}{}(<>{}())

ลองออนไลน์!

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

เนื่องจากสแต็กใน Brain-Flak เริ่มต้นที่ศูนย์โปรแกรมว่างจะมีศูนย์อยู่ด้านบนสุดของสแต็กในขณะที่โปรแกรมอื่น ๆ (ยกเว้นโปรแกรมที่ลงท้ายด้วยอักขระ null) จะมีค่าจริง ซึ่งหมายความว่าเราสามารถเรียกใช้โปรแกรมได้ง่ายมากในอินพุตสแต็ก

{      (<>)}{}              #If not zero
 <>(())                     #Push one to the other stack
              (<>{}())      #Switch to other stack and increment by one

คุณสามารถแก้ไขคำตอบนี้ได้ไหม ฉันตั้งใจลงได้รับการโหวตมัน :)
Conor โอไบรอัน

9

3. APL, 7 ไบต์

' {'⍳⊃⍞

คำอธิบาย:

      ⍞  read from the keyboard
     ⊃   first item of list, or space if empty
' {'⍳    index into the string ' {', giving N+1 (=3) if not found

8

10. Bash (+ coreutils) [ภาษา 6], 44, 74 ไบต์

รุ่นคงที่ (ส่งคืนรหัสภาษา)

expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G

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


7

9. จอตา (ภาษา 1), 20 ไบต์

$|}\{|[:'][^]']|,\b1

ลองออนไลน์!

เช่นเดียวกับ Plannapus ฉันตัดสินใจที่จะเขียนเพื่อสลับสิ่งต่าง ๆ เล็กน้อยซึ่งท้ายที่สุดก็ทำให้รหัสสั้นลงอย่างมาก (การแก้ไขคำตอบสุดท้ายของฉันสำหรับบัญชีล่าสุดของ Plannapus จะสิ้นสุดลงประมาณ 32 ไบต์)

คำอธิบาย

เช่นเดียวกับคำตอบอื่น ๆ ของฉันนี่เป็นเพียงการนับจำนวนการจับคู่ regex ต่างๆ แต่ดำเนินการได้อย่างมีประสิทธิภาพมากขึ้น:

  • $ตรงกับจุดสิ้นสุดของสตริง วิธีนี้ใช้ได้ผลเสมอแม้ว่าจะมีการจับคู่กันไปจนสุดทางของสตริงดังนั้นสิ่งนี้จะทำให้เรามีข้อมูลพื้นฐาน1สำหรับอินพุตทั้งหมด
  • }\{พบการแข่งขันเดียวในโปรแกรมที่สอง (Brain-Flak) 2นำนับมีถึง แบ็กสแลชไม่จำเป็นสำหรับการหลบหนี แต่ป้องกันไม่ให้ส่วนนี้ของ regex จับคู่ตัวเอง
  • [:'][^]']จริง ๆ แล้วสวยแฟนซี จุดประสงค์เดียวคือการนับทั้งสอง'ในโปรแกรม APL (ภาษา 3) และสาม:ในโปรแกรม JavaScript (ภาษา 4) แต่เราต้องป้องกันส่วนนี้จากการจับคู่ตัวเอง ดังนั้นเราจึงยังมั่นใจว่าตัวอักษรถัดไปไม่เป็น'หรือ](เพราะเหล่านั้นไม่ได้ปรากฏขึ้นหลังจากที่คนที่เราไม่ต้องการที่จะตรง แต่พวกเขาไม่ปรากฏในโปรแกรมนี้ได้ที่นี่)
  • 'จากส่วนก่อนหน้านี้เป็นสาเหตุหนึ่งในการแข่งขันอยู่แล้วในโปรแกรม R ดังนั้นเราจึงต้องสามมากขึ้น สตริงย่อย,1ปรากฏในทั้งสองสามครั้งและไม่มีโปรแกรมอื่น เราจับคู่มันโดยเพิ่ม wordboundary ซ้ำซากในระหว่างกับ,\b1เพื่อป้องกันไม่ให้จับคู่ตัวเองอีกครั้ง

อืมเพิ่งรู้ว่านี่ไม่ได้ทำลายคำตอบ R เลยเพราะ1มันเป็นเพียงแค่เอาท์พุทเริ่มต้น ฉันจะต้องทำอะไรสักอย่างกับคำตอบต่อไป
Martin Ender

7

18. C (ภาษา 10), 121 ไบต์

นี่คือมาตรฐาน C89 หรือ C90 สามารถใช้กับเสียงดังกราวหรือ gcc บน Try It Online

main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}

ภาพพิมพ์นี้:

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6ด้วยคำตอบ10และ17 (Bash)

  • 7พร้อมคำตอบ11 (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10 ด้วยคำตอบนี้ (C)

นี่คือไดร์เวอร์ bash ที่รันได้ทั้งหมด 18 คำตอบในลองออนไลน์!

Ungolfed เทียบเท่า (646 ไบต์):

#include <string.h>
#include <stdio.h>
int main(){
    char *v=" ^{ s ePfwm", b[999];
    gets(b); /* buffer overrun if more than 998 characters in the input.
                could be a problem if we get to 191 answers */
    char *c = strchr(v, b[0]); /* Find first character of input in v, or null */
    int n = strlen(b);
    if (!n) {
        printf("1");
    } else if (c) {
        printf("%d", c-v); /* Index of first character of input in v */
    } else if (n > 99) {
        printf("4");
    } else if (n > 60) {
        printf("5");
    } else if (n > 15) {
        printf("1");
    } else {
        printf("3");
    }
    return 0;
}

6

5. จอตา (ภาษา 1), 23 ไบต์

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}

ลองออนไลน์! (ทดสอบอินพุตที่เป็นไปได้ทั้งหมด)

นับการแข่งขันของสิ่งต่าง ๆ ในอินพุต:

  • ^$ จับคู่สตริงอินพุตนั่นคือคำตอบแรกหนึ่งครั้ง
  • {} จับคู่ตัวเองซึ่งมีสองในโปรแกรมที่สองและหนึ่งในหนึ่งนี้
  • (?![⊂⍴])[⊂-⍴]จับคู่อักขระที่มีรหัสจุด 8834 ถึง 9076 ซึ่งเป็นเอกสิทธิ์ซึ่งค้นหาการแข่งขันสามรายการในโปรแกรมที่สาม เราใช้ lookahead เชิงลบเพื่อหลีกเลี่ยงจุดสิ้นสุดของช่วงที่ถูกจับคู่ในโปรแกรมนี้
  • \B=ตรงกับ=ที่ไม่ได้นำหน้าด้วยตัวอักษรคำ สิ่งนี้ตรงกับสี่=ในสี่ในโปรแกรมและไม่ตรงกับ=ในโปรแกรมนี้

5

7. จอประสาทตา (ภาษา 1), 27 ไบต์

^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5

ลองออนไลน์! (ทดสอบอินพุตที่เป็นไปได้ทั้งหมด)

ปรับเปลี่ยนเล็ก ๆ น้อย ๆ ของคำตอบที่ห้า \B=ค้นหาการแข่งขัน 4 รายการในคำตอบที่หกแล้วและ\b5ค้นหาโดยไม่ตรงกับคำตอบอื่น ๆ


4

4, JavaScript (ES6), 32 ไบต์

s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1

เอาต์พุต 1 สำหรับอินพุตว่าง 2 ถ้าอินพุตเริ่มต้นด้วย a {, 4 หากเริ่มต้นด้วยsและ 3 เป็นอย่างอื่น ..


คุณสามารถแทนที่s[0]=='{'bys[0]>'z'

1
@Masterzagh ฉันยังคิดเกี่ยวกับวิธีที่จะสามารถเล่นกอล์ฟได้ แต่อนิจจานี่ไม่ใช่รหัสกอล์ฟ: /
Kritixi Lithos

@KritixiLithos ใช่แล้ว แต่เขาเล่นกอล์ฟแล้วฉันจึงคิดว่าเขาอยากจะไปต่อ

@Masterzagh ผู้คนควรหลีกเลี่ยงการแก้ไขคำตอบที่ถูกต้องในความท้าทายเช่นนี้เพราะพวกเขาสามารถทำให้เป็นโมฆะ) คำตอบในภายหลังข) คำตอบที่กำลังทำงานอยู่
Martin Ender

@MartinEnder คุณพูดถูก เช่นนี้ฉันจะไม่แก้ไข ฉันรู้ว่ามันดูเหมือนกอล์ฟ (เพราะผู้ประกอบการที่ประกอบไปด้วยสาม) แต่ฉันไม่ได้เขียนอย่างนั้นในจุดประสงค์ ... ขอบคุณสำหรับความคิดเห็นทั้งหมด!
ลุค

4

11. Mathematica [ภาษา 7], 53 ไบต์

Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&

ฟังก์ชั่นที่ไม่ได้ตั้งชื่อใช้รายการของตัวละครเป็นอาร์กิวเมนต์และส่งออกจำนวนเต็มบวก เพียงแยกสาขาที่ตัวอักษรตัวแรกของอินพุตโดยใช้ตำแหน่งในสตริง"^{'sceP"เพื่อตัดสินใจเลือกเอาต์พุต นี้จะช่วยให้คำตอบที่เหมาะสมสำหรับการส่งก่อนหน้านี้ทั้งหมดยกเว้นโปรแกรม Retina เริ่มต้นที่ว่างเปล่าและคำตอบที่ Retina ล่าสุด ; ข้อผิดพลาดทั้งสองข้อนี้คาย แต่ผลลัพธ์ถูกซ่อมแซมโดยกฎ/._@__->1ที่แปลงฟังก์ชันที่ไม่ได้ประเมินค่าใด ๆ ให้1เป็น


ฉันคิดว่ามันถึงเวลาแล้วที่จะทำให้กลยุทธ์ตัวละครตัวแรกนั้นแย่ลง :)
Martin Ender

1
ฉันกำลังจะไป แต่จากนั้นฉันจำได้ว่าฉันต้องส่งออกอย่างถูกต้องสำหรับภาษาของฉันเองเช่นกัน: D
Greg Martin

4

16. Perl (ภาษา 9), 94 ไบต์

while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}

ลองออนไลน์! (ตรวจสอบคำตอบทั้งหมด) เอาท์พุท "1234151516748149"

ภาพพิมพ์นี้:

  • 1 พร้อมคำตอบ 1, 5, 7, 9 และ 14 (Retina)
  • 2 พร้อมคำตอบ 2 (Brain-Flak)
  • 3 พร้อมคำตอบ 3 (APL)
  • 4 กับคำตอบ 4, 12 และ 15 (Javascript)
  • 5 กับคำตอบ 6 และ 8 (R)
  • 6 พร้อมคำตอบ 10 (Bash)
  • 7 กับคำตอบ 11 (Mathematica)
  • 8 พร้อมคำตอบ 13 (Python)
  • 9 ด้วยคำตอบนี้ (Perl)

โปรแกรมตรวจสอบความยาวของอินพุตและแมปมันกับการกระจายภาษาปัจจุบัน


3

6. R (ภาษา 5), 61 ไบต์

cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

ตรวจสอบว่าอักขระตัวแรกของอินพุตคืออะไรและเลือกเอาต์พุตตามนั้น

สิ่งนี้จะพิมพ์:

  • 1ด้วยคำตอบ1และ5 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 (Javascript)

  • และ5ด้วยคำตอบนี้

การใช้งาน:

> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))

1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
{<>(())(<>)}{}(<>{}())
2
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
' {'⍳⊃⍞
3
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
4
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
1
> cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
5

เมื่อต้องการเรียกใช้นอกของ REPL นี้ดูความคิดเห็นภายใต้คำตอบที่ 8
plannapus

3

8. R (ภาษา 5), 76 ไบต์

c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)

ตรวจสอบตัวอักษรตัวแรกของการป้อนข้อมูลและเปรียบเทียบกับเวกเตอร์ที่มี (ตามลำดับ) สตริงที่ว่างเปล่า, {, ', และs cจากนั้นจะส่งออกดัชนีของการแข่งขัน (การจัดทำดัชนี R คือ 1) หรือ 1 หากไม่มีการจับคู่

แนวคิดเดียวกันกับ answer n ° 6แต่ป้องกันไม่ให้คำตอบ n ° 7ตรงกัน

ภาพพิมพ์นี้:

  • 1ด้วยคำตอบ1 , 5และ7 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 (Javascript)

  • และ5ด้วยคำตอบ6และคำตอบนี้ (R)

ถ้าฉันไม่เข้าใจผิดค่าเผื่อการนับไบต์สำหรับคำตอบนี้คือ 94 ไบต์


ล่ามออนไลน์ FYI R (rfiddle, ideone และ tryitonline) ดูเหมือนว่าจะมีปัญหาในการจัดการ stdin (อย่างน้อยก็กับ readline ()) ดังนั้นจึงไม่ทำงานอย่างถูกต้อง หากคุณต้องการลอง (และคำตอบก่อนหน้านี้) คุณจะต้องลองแบบโลคัลในเวอร์ชัน R ที่ติดตั้งไว้ฉันกลัว
plannapus

^ ตกลงนอก REPL ควรถูกแทนที่ด้วยreadline readLines(file("stdin"))ซึ่งหมายถึง 16 อักขระเพิ่มเติม: คำตอบ 6 ควรเป็น 77 ไบต์ (จาก 79 ที่อนุญาต) และคำตอบนี้ 92 ไบต์ (จาก 94 ที่อนุญาต) ด้วยการเปลี่ยนแปลงนี้จะทำงานกับล่ามออนไลน์เช่นกัน
plannapus

3

12. Javascript (ภาษา 4), 117 ไบต์

หมายเหตุ: ฉันเปลี่ยนอักขระเพื่อแก้ไขข้อผิดพลาดในอันนี้

c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;

ตรวจสอบตัวอักษรตัวแรกของอินพุตถ้าเป็น c จะตรวจสอบความยาวของอินพุต

ขาออก:

  • 1 สำหรับคำตอบ 1, 5, 7, 9
  • 2 สำหรับคำตอบ 2
  • 3 สำหรับคำตอบ 3
  • 4 สำหรับคำตอบ 4 และคำตอบนี้
  • 5 สำหรับคำตอบ 6, 8
  • 6 สำหรับคำตอบ 10
  • 7 สำหรับคำตอบ 11

3

13. Python (ภาษา 8), 110 ไบต์

หมายเหตุ:คำตอบนี้เปลี่ยนไป 6 ชั่วโมงหลังจากโพสต์ตามคำแนะนำของ OP

from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N

นี่เป็นแนวคิดเดียวกันกับคำตอบ 10 (เป็น bash) แต่ใน Python 3 (วิธีนี้สามารถใช้ได้กับการเข้าร่วมมากกว่า 3 รายการก่อนที่เราจะหมดเลขฐานสิบหก)

ภาพพิมพ์นี้:

  • 1ด้วยคำตอบ1 , 5 , 7และ9 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4และ12 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6ด้วยคำตอบ10 (Bash)

  • 7พร้อมคำตอบ11 (Mathematica)

  • 8 สำหรับคำตอบนี้ (Python)

ลองออนไลน์! สำหรับ: คำตอบ 1 , คำตอบ 2 , คำตอบ 3 , คำตอบ 4 , คำตอบ 5 , คำตอบ 6 , คำตอบ 7 , คำตอบ 8 , คำตอบที่ 9 , คำตอบ 10 , คำตอบ 11 , คำตอบ 12หรือ คำตอบนี้


ขีด จำกัด ไบต์ปัจจุบันคืออะไร
วิ

@Vi: มันเป็น 149 สำหรับคำตอบ 13 และ 163 สำหรับคำตอบ 14; แต่ OP เพิ่งเปลี่ยนกฎการนับไบต์เป็น 45 + 5n ดังนั้นมันจะเป็น 110 ไบต์สำหรับคำตอบที่ 13 และ 115 ไบต์สำหรับคำตอบที่ 14
Nick Matteo

คุณควรจะวางโซลูชัน 110 ไบต์ขึ้นไป
clismique

@ Qwerp-Derp: เอาล่ะ หวังว่าจะไม่ทำลายงานต่อเนื่องของทุกคน
Nick Matteo

ตกลงรอประมาณ 60 คำตอบจนกว่าไบต์จะไปถึงพื้นที่ที่เป็นมิตรกับจาวา
วิ

3

24. Zsh (ภาษา 11), 142 ไบต์

คำตอบก่อนหน้าของฉัน # 18 ใน C ยังคงไม่ได้แก้ไขสำหรับรายการที่ตามมาทั้งหมด ( สาธิต ) งั้นลองผสมกันหน่อย

typeset -A p
p=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)
echo ${p[(k)$1]:-1} #@<`w&X{

จุดประสงค์ของความคิดเห็นในตอนท้ายคือเพื่อให้ตรงกับความยาวของคำตอบที่ 21 และ 23 และตรวจสอบให้แน่ใจว่าไม่มีอักขระตัวเดียวของแฮช sha256 หรือ sha384 ที่ไม่ซ้ำกันสำหรับทุกคำตอบจนถึงการใช้อักขระที่ตรวจสอบ ;-)

ภาพพิมพ์นี้:

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6พร้อมคำตอบ10 , 17 , 20และ22 (Bash)

  • 7ด้วยคำตอบ11และ19 (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10ด้วยคำตอบ18 , 21และ23 (C / C ++)

  • 11 ด้วยคำตอบนี้ (Zsh)

ลองออนไลน์!


ฉันคิดว่านี่เป็นคำตอบแรกที่เป็นแบบหลายแถว ... +1 จากฉัน
clismique

2

14. จอตา (ภาษา 1) 39 ไบต์

'[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$

ลองออนไลน์! (ทดสอบอินพุตที่ถูกต้องทั้งหมด)


1
Come on Martin โพสต์ในภาษาอื่น ... เช่นกันคุณช่วยทำสิ่งที่จัดรูปแบบคำตอบได้ไหม?
clismique

3
@ Qwerp-Derp นี่คือความจริงที่กลายเป็นรูปแบบที่น่าสนใจในสนามกอล์ฟมาตรฐาน regex แทนที่จะมีชุดอินพุตและต้องจับคู่บางส่วนและชุดอื่นล้มเหลวที่นี่คุณต้องรับจำนวนการจับคู่ที่เฉพาะเจาะจงในแต่ละอินพุต ฉันสงสัยว่า regex นี้จะระเบิดชี้แจงในบางจุด
Martin Ender

เป็น 39 ไบต์จริงเหรอ? TIO รายงาน 37 ไบต์
Arnauld

1
@Arnauld TIO นั้นยากที่จะนับจำนวนอักขระสำหรับ Retina เพราะคุณมักจะใช้การเข้ารหัสไบต์เดียว คำตอบนี้ต้องใช้ UTF-8
Martin Ender


2

17. Bash (+ coreutils + openssl) (ภาษา 6), 103 ไบต์

แข็งแรงเล่นกอล์ฟ

expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x

ใช้เทคนิคเดียวกับฉันคำตอบ # 10แต่มีBase64เข้ารหัสพจนานุกรมแทนHex

ฉันรวบรวมไฟล์ข้อมูลต่อไปนี้เพื่อทำการทดสอบ:

6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

ทดสอบ

for i in `seq 17`
do
  echo -n `cat lchain|sed -n $i'{p;q}'|cut -c1`=\>
  cat lchain|sed -n $i'{p;q}'|cut -c6-|\
  expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
done

6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

2

19. Mathematica (ภาษา 7), 96 ไบต์

Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&

ฟังก์ชั่นที่ไม่มีชื่อการรับรายการอักขระเป็นอินพุตและส่งคืนจำนวนเต็ม:

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6ด้วยคำตอบ10และ17 (Bash)

  • 7ด้วยคำตอบ11และคำตอบนี้ (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10ด้วยคำตอบ18 (C)

จนถึงความยาวทั้งหมดของคำตอบนั้นแตกต่างกันและพวกมันยังมีโมดูโล 59 ที่แตกต่างกันด้วยเหตุนี้จึงสามารถตรวจจับได้ว่ามีเลขจำนวนเต็มใดในช่วง 33, 34, ... , 91 ซึ่งสอดคล้องกับ (mod 59) เหล่านี้ล้วนเป็นตัวอักขระ ASCII, เข้ารหัสโดยสตริง";NRU$ Q B [1: =L J, 5% 3 # >"; การใช้ToCharacterCode@StringSplit@เปลี่ยนสตริงนี้เป็นรายการของสิบรายการจำนวนเต็มในช่วงนั้นและPosition[...,Mod[Length@#,59,33]][[1,1]]ค้นหารายการย่อยสิบรายการที่ตรงกับความยาวที่แก้ไขของอินพุต


1

20. Bash (+ coreutils + openssl) (ภาษา 6), 121 ไบต์

แข็งแรงเล่นกอล์ฟ

expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u

วิธีการเดียวกันกับคำตอบ# 17 (ซึ่งจะขึ้นอยู่กับคำตอบเดิมของฉัน# 10 )

เนื่องจากเรามี 10 ภาษาที่แตกต่างกันในขณะนี้ฉันได้เปลี่ยนเป็นการเข้ารหัสตำแหน่งฐานสิบหก

ข้อมูล

6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

ทดสอบ (เอาท์พุท)

./test
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2

1

23. C (gcc) (ภาษา 10), 142 ไบต์

main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

ลองออนไลน์!

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6พร้อมคำตอบ10 , 17 , 20และ22 (Bash)

  • 7พร้อมคำตอบ11และ19 (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10ด้วยคำตอบ18 , 21และคำตอบนี้ (C)

โปรแกรมนี้นับจำนวนอักขระที่แตกต่างกัน (ใน ASCII ดังนั้นอักขระหลายไบต์ UTF-8 จึงแบ่งออกเป็นหลายรายการ) จากนั้นตามต้นไม้การตัดสินใจที่ออกแบบมาอย่างรอบคอบโดยพิจารณาจากจำนวนที่เกิดขึ้นของอักขระนี้หรืออักขระนั้น

แผนผังการตัดสินใจไม่เปลี่ยนแปลงจาก # 21 (yay!) ฉันไม่ได้รับอนุญาตให้โพสต์รหัสเดียวกันดังนั้นเรากลับไปที่ C บริสุทธิ์ด้วยการแก้ไขเล็กน้อย


0

21. C ++ (gcc) (ภาษา 10 เป็นตัวแปรของ C), 142 ไบต์

main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}

ลองออนไลน์!

  • 1ด้วยคำตอบ1 , 5 , 7 , 9และ14 (Retina)

  • 2ด้วยคำตอบ2 (Brain-Flak)

  • 3ด้วยคำตอบ3 (APL)

  • 4ด้วยคำตอบ4 , 12และ15 (Javascript)

  • 5ด้วยคำตอบ6และ8 (R)

  • 6ด้วยคำตอบ10 , 17และ20 (Bash)

  • 7พร้อมคำตอบ11และ19 (Mathematica)

  • 8ด้วยคำตอบ13 (Python)

  • 9ด้วยคำตอบ16 (Perl)

  • 10ด้วยคำตอบ18และคำตอบนี้ (C)

โปรแกรมนี้นับจำนวนอักขระที่แตกต่างกัน (ใน ASCII ดังนั้นอักขระหลายไบต์ UTF-8 จึงแบ่งออกเป็นหลายรายการ) จากนั้นตามต้นไม้การตัดสินใจที่ออกแบบมาอย่างรอบคอบโดยพิจารณาจากจำนวนที่เกิดขึ้นของอักขระนี้หรืออักขระนั้น

เรื่องไม่สำคัญ : ตัวอักษร K ไม่ได้ถูกใช้จนกระทั่งรายการนี้ ตัวอักษร I, E, Y, j, k, q, z ยังคงไม่ได้ใช้


มีตัวเลือกที่จะต้องพิจารณา C ++ ภาษา 11 เป็นเพียงไม่กี่ไบต์ที่เหลือเพื่อให้พอดีกับว่าใน.
Lyth

0

22. Bash (+ coreutils) [ภาษา 6], 123, 131 ไบต์

แก้ไข: เผยแพร่รุ่นที่ไม่ถูกต้องในตอนแรกควรได้รับการแก้ไขในขณะนี้

แข็งแรงเล่นกอล์ฟ

expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L

เทคนิคเดียวกับคำตอบของฉัน # 20 # 17 และ# 10

ข้อมูล

6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

ทดสอบการทำงาน

./test
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1

อะไร44?
clismique

22 * 2? 󠀠󠀠󠀠󠀠󠀠
Vi

@ Qwerp-Derp เพียงแค่พิมพ์ผิด
Zeppelin

มาเลยคำตอบของคุณกำลังเบื่อถ้าคำตอบถัดไปของคุณเป็นแบบนี้ฉันกำลังพิจารณาการ downvoting (มันไม่น่าสนใจใช่มั้ย?)
clismique

1
มีบางอย่างผิดปกติที่นี่ มีเพียง 20 รายการในจดหมายที่แฮชของคุณ (3PgT เป็นต้น) สำหรับการป้อนข้อมูลที่ว่างเปล่าฉันได้รับข้อผิดพลาดและสำหรับคำตอบ # 2 ฉันได้รับ "4" (ทั้งทำงานอย่างถูกต้องกับคำตอบ 20. )
Nick Matteo

0

25. ทุบตี (ภาษา 6), 169 ไบต์

เทคนิคเดียวกับคำตอบของฉัน # 22 # 20 # 17 และ# 10

ขอโทษด้วย @ Qwerp-Derp! ;) ฉันสัญญาว่านี่เป็นอันสุดท้าย :)

แข็งแรงเล่นกอล์ฟ

{ echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8

ข้อมูล

โปรดทราบว่าการขึ้นบรรทัดใหม่มีการเข้ารหัสเป็น \ n สำหรับคำตอบ # 24

6 25 { echo -n 'addsomesalt?';cat; }|expr substr 6BA6A67A69418476151514321 $(expr index 1W0TC4YrKwRGAJupDqn7Xlcog \\`openssl sha256 -binary|base64|cut -c40`) 1| dc -e16i?p #8
B 24 typeset -A p\np=("[\$^]*|'\[*" 1 '{*' 2 "' *" 3 '?=>*' 4 'c?[wt]*' 5 'e*' 6 'P*' 7 'f*' 8 'w*' 9 'm*' 10 'ty*' 11)\necho ${p[(k)$1]:-1} #@<`w&X{
A 23 main(c){int d[256]={0};while((c=getchar())!=EOF)d[c]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 22 expr substr 6A67A69418476151514321 $(expr index i3xFepQsAalyIvtqPY7ZN+ \\`openssl sha256 -binary|base64|cut -c10`) 1| dc -e16i?p #L
A 21 main(){int K,d[256]{0};while((K=getchar())!=EOF)d[K]++;printf("%d",d[88]?9:d[119]?5*d[123]:d[35]?d[38]?7:8-d[96]:d[48]?4:d[60]?2:1+d[158]*2);}
6 20 expr substr 67A69418476151514321 $(expr index 7042PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1| dc -e16i?p #u
7 19 Position[ToCharacterCode@StringSplit@";NRU$ Q B [1: =L J, 5% 3 # >",Mod[Length@#,59,33]][[1,1]]&
A 18 main(n){char*v=" ^{ s ePfwm",b[999],*c;gets(b);c=strchr(v,*b);n=strlen(b);printf("%d",n?c?c-v:n>99?4:n>60?5:n>15?1:3:1);}
6 17 expr substr 69418476151514321 $(expr index 2PtgBOlrvfDVC8ZHL `openssl md5 -binary|base64|cut -c2`) 1 #x
9 16 while(<>){print substr("1234151516748149",index("0F=POmS6D4e_XWVH",chr(47+length($_)%70)),1);}
4 15 t=>({24:2,86:3,5:4,73:5,68:5,74:7,4:6,79:4,1:8,67:4})[[...t].reduce((r,c,i)=>r*i^c.charCodeAt(0),0)&0x5F]||1
1 14 '[ ⍳]|}\{|[o@:][^]'c@:]|^c|,\b1|1\d|$
8 13 from hashlib import*;print("1234151516748"["a5e1f936cd78b".index(sha256(input().encode()).hexdigest()[34])])#N
4 12 c=>c?c[0]=='e'?6:c[0]=='$'||c[0]=='^'?1:c[0]=='c'&&c.length>80?4:c[0]=='P'?7:c[0]=='c'?5:c[0]=='{'?2:c[0]=='s'?4:3:1;
7 11 Position[Characters@"^{'sceP",#&@@#][[1,1]]/._@__->1&
6 10 expr substr "1234151516" $(expr index "365f8dc0eb" `md5sum|cut -c12`) 1 #G
1 09 $|}\{|[:'][^]']|,\b1
5 08 c=which(c("","{","'","s","c")==substr(readline(),1,1));ifelse(length(c),c,1)
1 07 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}|\b5
5 06 cat(switch(substr(readline(),1,1),"{"=2,"'"=3,"s"=4,"c"=5,1))
1 05 ^$|(?![⊂⍴])[⊂-⍴]|\B=|{}
4 04 s=>s?s[0]==`{`?2:s[0]==`s`?4:3:1
3 03 ' {'⍳⊃⍞
2 02 {<>(())(<>)}{}(<>{}())
1 01

ทดสอบผลลัพธ์

6=>6
B=>11
A=>10
6=>6
A=>10
6=>6
7=>7
A=>10
6=>6
9=>9
4=>4
1=>1
8=>8
4=>4
7=>7
6=>6
1=>1
5=>5
1=>1
5=>5
1=>1
4=>4
3=>3
2=>2
1=>1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.