คุณได้อะไรเมื่อคูณ 6 ด้วย 9 (42)


60

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

โอ้และฉันจะต้องสร้างแหล่งข้อมูลใน Minecraft ดังนั้น ... ไบต์ที่น้อยที่สุดชนะ!

ปะยางรถ

  • รับ 2 ตัวเลขเป็นอินพุต (ชนิดไม่สำคัญ แต่จะมีเพียง 2 รายการเท่านั้นและลำดับจะต้องสอดคล้องกันดังนั้นสตรีมและอาร์เรย์ก็โอเคตราบใดที่พวกเขายังคงรักษาลำดับที่พวกเขาผ่านเข้ามานั่นคือแผนที่ชนะ ใช้งานไม่ได้เพราะไม่รักษาลำดับ)
  • เอาท์พุทหลายของทั้งสองหมายเลขยกเว้นถ้าพวกเขาเป็น 6 และ 9 จากนั้นออก 42 (สั่งเรื่อง!)
    • PS ฉันไม่เคยนับเลขได้ดีเลยดังนั้นฉันคิดว่าเฉพาะจำนวนเต็มตั้งแต่ 0 ถึง 99 เป็นตัวเลขจริง (ประเภทที่ใช้ไม่สำคัญ)
  • จำนวนไบต์ต่อภาษาที่น้อยที่สุดชนะ!

ลีดเดอร์บอร์ด:


1
@JonathanAllan ใช่เพิ่มกฎสำหรับสิ่งนั้น
Tezra

73
รหัสคำถามมี42สองครั้งโดยบังเอิญ
Erik the Outgolfer

1
ถ้าจำนวนเต็มสูงสุดถึง 99 เป็นจำนวนจริงเท่านั้นเช่น 9 * 11 เป็นพรอมต์ที่ถูกต้อง แต่ 10 * 10 ไม่ใช่ใช่ไหม?
คนจรจัดที่มืด

14
@EriktheOutgolfer ... และ 12 หมายถึงสิ่งที่จะลบถ้าใส่คือ 6 และ 9
อดัม

11
@EriktheOutgolfer แม้ว่าคุณจะอ่าน ID ข้างหลัง
T. Sar - Reinstate Monica

คำตอบ:


65

Mathematica ขนาด 15 ไบต์

จำนวนไบต์ถือว่าการเข้ารหัส Windows ANSI (CP-1252)

6±9=42
±n__:=1n

กำหนดตัวดำเนินการไบนารี±ซึ่งแก้ปัญหาได้ เราเพียงกำหนด6±9=42เป็นกรณีพิเศษซึ่งมีความสำคัญกว่าและเพิ่มนิยามทางเลือกซึ่ง±เท่ากับการคูณ หลังใช้เคล็ดลับการเล่นกอล์ฟที่น่าสนใจพอสมควร ด้วยเหตุนี้การทำงานที่เป็นจริงที่ซับซ้อนมากและเราต้องดูเป็นลำดับ ลำดับคล้ายกับสิ่งที่เป็นที่รู้จักกันเป็นเครื่องหมายในภาษาอื่น ๆ เป็นพื้น "รายการ" โดยไม่มีเสื้อคลุมรอบ ๆ เช่นเป็นจริงเพียงf[1, Sequence[2, 3, 4], 5] f[1, 2, 3, 4, 5]แนวคิดที่สำคัญอื่น ๆ คือผู้ประกอบการทั้งหมดเป็นเพียงน้ำตาลทราย โดยเฉพาะอย่างยิ่งสามารถนำมาใช้เป็นผู้ประกอบการหรือเอกไบนารีและแสดงให้เห็นถึงหัว± PlusMinusดังนั้น±xเป็นPlusMinus[x]และเป็นa±bPlusMinus[a,b]

±n__ตอนนี้เรามีความหมาย PlusMinus[n__]นี่คือชวเลขสำหรับการกำหนด แต่n__แสดงถึงลำดับของข้อโต้แย้งโดยพลการ ดังนั้นนี่จึงเป็นการเพิ่มนิยามสำหรับการใช้ไบนารี (และ n-ary) ของPlusMinusเช่นกัน 1nค่าของความหมายนี้คือ ข้อโต้แย้งนี้ทวีคูณอย่างไร? ดี1nใช้คูณนัย Mathematica 1*nโดยการตีข่าวดังนั้นจึงเทียบเท่ากับ แต่ก็ยังเป็นเพียงแค่จดชวเลข* Times[1,n]ตอนนี้nเป็นลำดับของการขัดแย้ง ดังนั้นหากเราเรียกแล้วนี้จะกลายเป็นจริงa±b และนี่เป็นเพียงTimes[1,a,b]a*b

ฉันคิดว่ามันค่อนข้างเรียบร้อยว่าการใช้ไวยากรณ์ผิดวิธีนี้ช่วยให้เรากำหนดผู้ประกอบการไบนารี่ได้อย่างไร ตอนนี้เราสามารถทำการPlusMinus[2,3,4]คำนวณได้24(ซึ่งสามารถเขียนเป็น±##&[2,3,4]หรือ2±Sequence[3,4]แต่มันบ้าไปแล้วในตอนนั้น)


ฉันชอบที่นี่เป็นแพทช์สำหรับ 'เครื่องคิดเลข' ของฉัน: 3 เพื่อความสนุกงานนี้สำหรับ * ด้วยหรือไม่ : 3
Tezra

3
@Tezra well *เป็นตัวดำเนินการในตัวดังนั้นคุณจะต้องUnprotectเพิ่มข้อกำหนดเพิ่มเติม แต่Unprotect[Times];6*9=42ควรใช้งานได้ (ไม่สามารถทดสอบได้ในขณะนี้)
Martin Ender

1
การทำสิ่งนี้กับโอเปอเรเตอร์ * นั้นช่างเลวร้ายเหลือเกิน .... ฉันชอบมาก! >: 3
Tezra

1
ฉันจะโหวตได้อย่างไรเมื่อมีคนอื่น ๆ อีก 42 คนอย่างแน่นอน!? นี่คือ "อนาคต +1 ของฉัน" ที่จะได้รับหลังจากมีคนอื่นทำลายมัน! :-)
The Vee

1
@MartinEnder Aww; แต่มันก็เป็น Mathematica ที่สั้นที่สุดและที่ฉันโปรดปรานจนถึงตอนนี้ : 3
Tezra


25

C, 32 31 29 28 ไบต์

-2 ขอบคุณ Digital Trauma
-1 ด้วย musicman523

#define f(a,b)a^6|b^9?a*b:42

ค่อนข้างง่าย ประกาศฟังก์ชั่นมาโครfที่ใช้เวลาทั้งสองมีปากเสียงและa หากเป็นและเป็นผลตอบแทน มิฉะนั้นกลับxb
a6b942ab

ลองออนไลน์!


2
ใช้^แทน==และปรับตรรกะเล็กน้อย: #define f(a,b)a^6||b^9?a*b:42- บันทึก 2 ไบต์
บาดเจ็บทางระบบดิจิตอล

@DigitalTrauma ไชโย: D
MD XF

1
ฉันคิดว่าคุณสามารถใช้|แทน||การบันทึกไบต์อื่นเนื่องจากมันยังมีลำดับความสำคัญต่ำกว่า^
musicman523

@ musicman523 ขอบคุณ! การตัดต่อ
MD XF

1
คุณควรอัปเดตเวอร์ชัน shortC ของคุณเพื่อรับการเปลี่ยนแปลงเหล่านี้เช่นกัน
musicman523

17

JavaScript (ES6), 20 ไบต์

x=>y=>x-6|y-9?x*y:42

คำอธิบาย:

Iff x == 6 และ y == 9 x-6|y-9จะเป็น 0 (เท็จ) และ 42 จะเป็นผลลัพธ์

ตัวอย่างข้อมูล:

f=

x=>y=>x-6|y-9?x*y:42

console.log(f(6)(9));
console.log(f(9)(6));


4
ทำได้ดีมาก หวังว่าฉันจะคิดถึงมัน +1
Shaggy

14

Python 2 , 30 29 ไบต์

ขอบคุณJonathan Allanสำหรับการบันทึกไบต์!

lambda x,y:x*[y,7][6==x==y-3]

ลองออนไลน์!


2
บันทึกไบต์โดยใช้ความจริงที่ว่า 6 * 7 คือ 42:lambda x,y:x*[y,7][6==x==y-3]
Jonathan Allan

@JanathanAllan Ohh เรียบร้อยแล้ว! ขอบคุณ! :)
Adnan

วิธีนี้ใช้ได้กับ Python 3
AMK

สิ่งที่ฉันได้รับ! ดูเหมือนจะไม่สามารถหาวิธีที่จะตีกอล์ฟต่อไปได้
FlipTack

12

05AB1E , 15 11 9 ไบต์

-4 ไบต์ขอบคุณ @Emigna

-2 ไบต์ขอบคุณ @Adnan

P¹69SQi42

ลองออนไลน์!

มันทำงานอย่างไร

P          # multiply input
 ¹         # push first number
  69       # the number 69
    S      # split per character
     Q     # equality for both inputs
       i42 # if so, print 42
           # otherwise print product

คุณสามารถบันทึก 4 ไบต์ด้วย‚D96SQi42ëP
Emigna

@Emigna huh ... ทำไมต้อง,เป็นจุดเริ่มต้น?
Neil A.

จับคู่ 2 อินพุตเพื่อเปรียบเทียบเพียงครั้งเดียวในรายการ
Emigna

ฉันคิดว่า6Qs9Q*คงจะทำงานเช่นเดียวกันสำหรับจำนวนไบต์เดียวกัน
Emigna

การเปลี่ยนรูปแบบการป้อนข้อมูลจะบันทึก 2 ไบต์:P¹69SQi42
Adnan

10

Java (OpenJDK 8) ,24 22 ไบต์

-2 ไบต์ต้องขอบคุณ @ OlivierGrégoire

a->b->a==6&b==9?42:a*b

ลองออนไลน์!


3
ยินดีต้อนรับสู่ PPCG! ฉันไม่รู้เกี่ยวกับ Java มากนัก แต่คุณสามารถลบการSystem.out.println()โทรออกและปล่อยให้ฟังก์ชันส่งคืนผลลัพธ์ได้หรือไม่
ETHproductions

2
@ LưuVĩnhPhúcไม่ได้อยู่ใน Java เพราะฉันต้องเขียน(a^6|b^9)==0เพราะไม่มีการเปรียบเทียบ "แตกต่างจาก 0" โดยปริยาย ข้อมูลโค้ดที่ได้จะมีความยาว 27 ไบต์ ยังไงก็ตามขอบคุณสำหรับคำแนะนำและโปรดบอกฉันว่าฉันได้รับเคล็ดลับของคุณผิด
Beluga ขี้อาย

1
@Riker ไม่มันไม่ทำงานอย่างนั้นใน java เช่นข้อมูลโค้ดint a = 5; if (a) do_some_stuff(); else do_other_stuff();แสดงType mismatch: cannot convert from int to booleanข้อผิดพลาดในการรวบรวม พวกเขาจะต้องทำอย่างชัดเจนด้วยค่าบูลีน; อ้างถึงSOและORACLE
Beluga ขี้อาย

3
a->b->a==6&b==9?42:a*bคุณสามารถใช้ความดีความชอบเพื่อสำรองหนึ่งไบต์และคุณสามารถกำจัดอัฒภาคในขณะที่มันไม่ได้เป็นส่วนหนึ่งของแลมบ์ดาเพื่อสำรองไบต์อื่น:
Olivier Grégoire

1
แค่ให้ทราบว่าทำไม 0 ไม่ได้เป็นเท็จ Java เป็นประเภทที่ปลอดภัยดังนั้น 0 เป็นจำนวนเต็มไม่อนุญาตให้พิมพ์แบบบูลและไม่ปลอดภัยดังนั้นคุณจึงไม่สามารถใช้ค่าที่ผิดพลาดได้
Martin Barker

6

ทับทิมขนาด 24 ไบต์

->a,b{a==6&&b==9?42:a*b}

a^6|b^9<1อาจทำงานเป็นบูลีน ยากที่จะทดสอบบนสมาร์ทโฟนของฉัน
Eric Duminil

1
@EricDuminil แต่น่าเสียดายที่นิพจน์นั้นแยกวิเคราะห์(((a^6)|b)^9)เช่นa.^(6).|(b).^(9)ดังนั้นจึงไม่สามารถทำงานได้อย่างถูกต้อง a-6|b-9==0จะใช้งานได้ แต่นั่นไม่สั้นกว่านี้
Ventero

@Ventero: ฉันไม่ได้คิดอย่างนั้น ขอบคุณ a,b==6,9จะดี แต่ก็ไม่ได้ผล
Eric Duminil

6

Brain-Flak , 158 154 148 140 138 126 ไบต์

(({}<>)(((([()()()]<>)){})<({}{}({}))>{(()()()){}(<{}>)}{}))([()]{()(<{}>)}{})(({<{}>{}((<>))}{}){}<{}>{<({}[()])><>({})<>}{})

ลองออนไลน์!

คำอธิบาย

รหัสนี้ค่อนข้างเรียบง่าย เราทำสำเนาของสองรายการแรกบนสแต็กเราลบ 6 จากหนึ่งและ 9 จากอีกรายการหนึ่ง จากนั้นเราก็นำnotค่าทั้งสองมาใช้ เราandค่าเหล่านั้นคูณผลลัพธ์ด้วย 12 คูณอินพุตและลบผลลัพธ์สองรายการ


2
คุณอาจต้องการใช้ประโยชน์notและand(หรือ backtick พวกเขา) อ่านคำอธิบายของคุณค่อนข้างสะดุดฉัน
MD XF

6

Factorio, 661 bytes, 6 combinators พร้อม 9 การเชื่อมต่อ

มี combinator คงที่หนึ่งชุดเพื่อเอาต์พุต A และ B เปลี่ยนเป็นชุดเหล่านี้เพื่อตั้งค่าอินพุต

สตริงพิมพ์เขียว (0.15.18):

0eNrNVm2O2jAQvcv8rEKFvSHLRuqPtrfYCkUhGWAkYkfOGDVCOUBv0bP1JLWTLQuB3U0QbfcPYvzxZt68eYr3sNxaLA0phngPlGlVQfxtDxWtVbr1a1yXCDEQYwEBqLTwUY4Z5WgmmS6WpFLWBpoASOX4HWLRBG8C+EScKr6MIJtFAKiYmLCrpw3qRNliicaleK2SAEpduata+fQObiI+zgKo/R+XIyeDWbcrA18IG71NlrhJd+RuuytPmInby1ucyq+uyFScnPHakWHrVg4VdScmnz2fPzQhjnxQlKlpS4zhk7ugLZd2BCTu0NS8IbXusMvalWgVJyuji4SUA4OYjcWmS606nm31wv8YzI+7SS66axbusHxh1zeITGaJ21C4w41XtyeHHCXH9D+o8eVUjYd3qoY47bc86rWPo158/yze2iCqPtxsmHx3r9ry3E6ylU9cTUv0aITDygwPZaaGeFMgUzbM99NBg/aMegPnV+gxRg6oLtFNZFsjfLhiJB+huZn1B87O7Crr/0Pnfz11vug5/9ePn+/E+2Hf++4beNHV8uzgRWWica6ejnDKiraM5oWXwhtC2CcVDo+FxfAWDfwc3Y9jLv4288cj5qG8IXU3Ie2zKj56xgXgZrNqOURhKGfR/GE6nzfNb7OMaxo=

เอาท์พุทเป็นสัญญาณ Z และจะต้องนำมาจากตัวตัดสินใจด้านบนและด้านล่าง

ภาพหน้าจอ


waaa ... ครั้งแรกที่ฉันเคยเห็นคำตอบของ factorio ใน ppcg xD
V. Courtois


6

เยลลี่ , 8 7 ไบต์

Vf96SạP

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

ลองออนไลน์!

มันทำงานอย่างไร

Vf96SạP  Main link. Argument: [b, a]

V        Cast [b, a] to string, then eval the resulting string.
         For [b, a] = [9, 6], this yields 96.
 f96     Filter with 96, yielding [96] if V returned 96, [] otherwise.
    S    Take the sum, yielding either 96 or 0.
      P  Compute the product of [b, a], yielding ba = ab.
     ạ   Compute the absolute difference of the results to both sides.
         When the sum is 0, this simply yields the product.
         However, when [b, a] = [9, 6], this yields 96 - 54 = 42.

สิ่งนี้มีความอิสระในระดับ -1 ความบังเอิญเหล่านี้เกิดขึ้นกับคุณได้อย่างไร
lirtosiast

5

Factorio, 581 bytes, 3 combinators พร้อมการเชื่อมต่อ 4 จุด

สตริงพิมพ์เขียว (0.16.36):

0eNqllNtu4jAQht9lLldmldNCFWkvto/RCkUhGWAkYkfOGDVCefeOnV1Km7ACemPJ9vibf04+webgsLWkGfITUGV0B/nrCTra6fLgz7hvEXIgxgYU6LLxO2/HpeZFZZoN6ZKNhUEB6RrfII+HtQLUTEw44sKmL7RrNmjF4AyqsaIa7SVHQWs6eWq0dy+46OcvBT3ki1hc1GSxGi8T5XWwNYdig/vySPJYXvxFFnJXB0znT7dkOy4mYR3JspOTs6DRYoFHtD3vSe98XP/CFZ9xtsqe0mW29KdNW9qgOYffgjCOW3eHk+eR3fai1WkuttY0BWlhQM7W4TC61mPAIYzYLxbry6yS7FKxJFs54rANFdhZRP3VMBnWQk08ZvZ+ChpExqSCyX9bYVLCRfxRwbmabenAaK+03rX0/RnT5z7VJbroQnUH7HkGlq7OsDFtc8WYzWJ8WxbTs4rSEu8bZKpuGoXopkn4gH5vGEKiO/SMO5vbtCgDEjTCjwcm5AWGO4ZgknX16Tq7OhRfHiZXypU91PTRd6ZYdIjo8PnmF3+1AvmfuuBq+bRKYmnWKM2G4R1hAPnz

ควรตั้งค่า combinator คงที่ด้านล่างซ้ายเป็นเอาต์พุต A และ B เป็นอินพุต เอาท์พุทเป็นสัญญาณ Z จาก combinator เลขคณิตล่างขวา

ป้อนคำอธิบายรูปภาพที่นี่

Top left: 2147483640 A, 2147483637 B
Top right: If everything = 2147483646 output B, input count
Bottom left: (input) A, (input) B
Bottom right: A * B -> Z


4

GW-BASIC , 55 ไบต์

1INPUT A:INPUT B
2IF A=6THEN IF B=9THEN ?"42":END
3?A*B

เอาท์พุท:

เอาท์พุต

เครื่องแรกที่pcjsมี IBM BASIC ซึ่งเป็นสิ่งเดียวกัน ในการทดสอบให้ตรงไปRunที่เครื่องกดEnter- Enterและพิมพ์BASICAเพื่อเข้าสู่โหมดเบสิก จากนั้นป้อนซอร์สโค้ด (โดยอัตโนมัติจะพิมพ์ออกมาให้คุณ) พิมพ์RUNป้อนจำนวนเต็มสองจำนวนเสร็จแล้ว!


3
คุณแน่ใจหรือไม่ว่า bytecount นั้นถูกต้อง? GW-BASIC ใช้การเข้ารหัสที่บางคำเช่นINPUTถูกเข้ารหัสในไบต์ที่น้อยกว่าอักขระที่สร้างขึ้นมาจะแนะนำ การนับจึงดูสูงสำหรับฉัน

@ ais523 เอาล่ะฉันวิ่งผ่านwcและได้ 55 ... คัดลอกวางลงในเครื่องจำลองของฉันและมันมีพฤติกรรมที่คาดหวัง
MD XF

3
ใช่ประเด็นของฉันคือคุณอาจให้คะแนนการส่งสูงกว่าที่ควรจะเป็น รับ GW-BASIC เพื่อบันทึกไฟล์จากนั้นดูขนาดของไฟล์ผลลัพธ์บนดิสก์ มันควรจะเล็กกว่านี้

@ ais523 บันทึกเป็นOUT.BAS: i.stack.imgur.com/32eH1.png Bytecount เป็นค่ากลาง
MD XF

ตกลงฉันไม่ได้คาดหวัง แต่ฉันคิดว่ามันเป็นสถานการณ์ที่ล้างใน (หรืออาจมีรูปแบบการบันทึกมากกว่าหนึ่งรูปแบบ?)


4

ตรวจสอบ , 34 33 ไบต์

.:+&>#v
#>42#v#9-!\>6-!*?
 d* ##p

ตรวจสอบคือ esolang ใหม่ของฉัน มันใช้การรวมกันของความหมาย 2D และ 1D

อินพุตคือตัวเลขสองตัวที่ส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่ง

คำอธิบาย

สแต็กเริ่มต้นด้วยอาร์กิวเมนต์บรรทัดคำสั่ง ขอเรียกขัดแย้งและab

ส่วนแรกเป็นหลักซ้ำกองทิ้งไว้เป็น.:+& ส่ง 0 ไปที่สแต็ก (เป็นส่วนหนึ่งของตัวอักษรตัวเลขที่สมบูรณ์โดย)a, b, a, b>9

#สลับไปที่ความหมาย 2D และvเปลี่ยนเส้นทาง IP ลง IP จะเข้าสู่ a ทันที#ซึ่งจะเปลี่ยนกลับไปเป็น 1D semantics อีกครั้ง

9-!ตรวจสอบว่าbเท่ากับ 9 (โดยการลบ 9 และจดลอจิคัล NOT) \>6-!จากนั้นจะตรวจสอบว่าaมีค่าเท่ากับ 6 สแต็คในขณะนี้มีa, b, 1, 1ถ้าหากว่าและb==9 a==6การคูณด้วย*รับตรรกะ AND ของค่าทั้งสองนี้a, b, 1หากให้อินพุตเป็น6และ9และa, b, 0อย่างอื่น

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

หากค่าสูงสุดของสแต็กคือ1นี่หมายความว่าค่าสแต็กอื่นเป็น6และ9ดังนั้นเราจึงกด 42 ไปที่สแต็กด้วย>42แล้วเลื่อนลงไปที่สอง#ในบรรทัดสุดท้าย

หากค่าสูงสุดของสแต็กคือ0การดำเนินการจะเลื่อนไปที่บรรทัดถัดไป dเอา0(ในขณะที่?ไม่ได้ทำเช่นนั้น) *และจากนั้นเราจะคูณสองปัจจัยการผลิตด้วย ##สวิทช์และออกจากโหมด 2D ไม่มีอะไรทำ

สาขาได้เข้าร่วมอีกครั้ง สแต็คทั้งมีหรือ6, 9, 1, 42 พิมพ์ค่าสแต็คด้านบนจากนั้นโปรแกรมจะสิ้นสุดโดยทิ้งส่วนที่เหลือของสแต็กa*bp


ดูเหมือนว่าภาษาที่ดี!
ไม่ใช่ต้นไม้


3

Python 3 , 36 33 ไบต์

lambda x,y:42if x==6==y-3else x*y

ลองออนไลน์!


1
lambda x:x[0]*x[1]if x!=(6,9)else 42สลับรุ่นขนาดเดียวกัน ข้อแตกต่างคือประเภทอินพุต
musicman523

ไม่เป็นไร - เวอร์ชั่นที่คุณแก้ไขสั้นลง :)
musicman523

รหัสที่คุณโพสต์นั้นใช้งานไม่ได้ดังนั้นฉันจึงเปลี่ยนเป็นเวอร์ชันใช้งานได้บน TIO ที่คุณเชื่อมโยง
ETHproductions

มันใช้ได้ผลกับฉัน: ใน [1]: f = lambda x, y: 42if 6 == x == y-3else x * y ใน [2]: f (6,9) Out [2]: 42 In [3] ]: f (9,6) Out [3]: 54 @ETHproductions
Martmists

@Martmists คุณหายไปแล้วเพราะรหัสของคุณf=lambda x,y:42if6==x==y-3else x*y
ETHproductions

3

APL (Dyalog)ขนาด 10 ไบต์

×-12×6 9≡,

ลองออนไลน์!

× ผลิตภัณฑ์ (ของข้อโต้แย้ง)

- ลบ

12× สิบสองครั้ง

6 9≡ ไม่ว่าจะเป็น (6,9) เหมือนกัน

, การต่อข้อมูล (ของอาร์กิวเมนต์)


โอ้ว้าวฉันเพิ่งเห็นสิ่งนี้และคำตอบ J ของฉันเหมือนกันทุกประการ: / ยกเว้นหนึ่งไบต์อีกต่อไป
Conor O'Brien

@ ConorO'Brien ทำให้รู้สึก J และ tacit APL นั้นส่วนใหญ่จะเทียบเท่ากันประหยัดสำหรับ primitive แบบหลายค่าของ J (และต้องมี Cap สำหรับการขึ้นยอดสุดท้าย)
Adám

3

R, 41 ฉันคิดว่าฉันไม่รู้วิธีนับไบต์ฉันใหม่: D

function(a,b){

if(a==6&b==9){42} else {a*b}

}

ฉันกำหนด funtion ซึ่งอาร์กิวเมนต์คือ a และ b ตามลำดับนี้ ถ้า a เท่ากับ 6 และ b เท่ากับ 9 มันจะคืนค่า 42 มิฉะนั้น a คูณ b


ยินดีต้อนรับสู่เว็บไซต์! :)
DJMcMayhem

ยินดีต้อนรับ คำนึงถึงการขึ้นบรรทัดใหม่และช่องว่างด้วย ในกรณีของคุณถ้าคุณลบบรรทัดใหม่และช่องว่าง (ซึ่งคุณสามารถทำได้) เพียง 41.
Masclins

1
คุณสามารถตัดสองไบต์ได้โดยใช้ifelse(a==6&b==9,42,a*b)
Masclins

คุณสามารถลดสิ่งทั้งปวงลงเหลือ 33 ไบต์function(a,b)`if`(a-6|b-9,a*b,42)ได้
rturnbull

นี่เป็นเพียง 41 ไบต์หลังจากที่คุณลบช่องว่างที่ไม่จำเป็นออกไปก่อนจนกว่าจะถึง 47 ไบต์
Pavel

3

SPL , 356 ไบต์

a.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:Listen to your heart!Puck:Listen to your heart!Are you as big as the sum of a big big big cat and a cat?If so, am I as big as the sum of a big big cat and a big cat?If so, you are as big as the product of I and the sum of I and a cat.If not, you are as big as the product of you and I.Open your heart

ด้วยการขึ้นบรรทัดใหม่และช่องว่าง:

a.                       *Title*
Ajax,.                   *Declare variable Ajax*
Puck,.                   *Declare variable Puck*
Act I:.
Scene I:.
[Enter Ajax and Puck]
Ajax: Listen to your heart!                  *Set Puck's value to user input*
Puck: Listen to your heart!                  *Set Ajax's value to user input*
      Are you as big as the sum of a big 
       big big cat and a cat?                *Is Ajax=9?* 
      If so, am I as big as the sum of a 
       big big cat and a big cat?            *Is Puck=6?* 
      If so, you are as big as the product 
       of I and the sum of I and a cat.      *If so, set Ajax=42* 
      If not, you are as big as the product 
       of you and I.                         *If not set Ajax=(Ajax)(Puck)*
      Open your heart                        *Print Ajax's value*


3

ML มาตรฐาน (MLton) , 22 20 ไบต์

บันทึก 2 ไบต์ต้องขอบคุณ @Laikoni!

fun$6 $9=42| $x y=x*y

ลองออนไลน์!

นี่คือสิ่งที่ SML มีความหมายซึ่งเป็นเหตุผลว่าทำไมมันถึงเต้น shortC และ Python

เวอร์ชั่นเก่าดูดีกว่ามาก : P



@Laikoni ว้าวฉันไม่รู้ว่าคุณสามารถใช้$เป็นตัวระบุได้! ทำไมไม่คอมไพล์นี้ถ้าคุณลบช่องว่างระหว่าง|และ$?
musicman523

SML สร้างความแตกต่างระหว่างตัวอักษรและตัวเลขและสัญลักษณ์ซึ่งค่อนข้างสะดวกสำหรับการเล่นกอล์ฟ |$ถูกแยกวิเคราะห์เป็นตัวระบุสัญลักษณ์เดียวดังนั้นทุกอย่างจึงแตก ฉันวางแผนที่จะเขียนคำถามเคล็ดลับสำหรับ SML เร็ว ๆ นี้และเพิ่มคำตอบเกี่ยวกับตัวระบุทั้งสองประเภท
Laikoni



2

เยลลี่ 10 ไบต์

⁼6,9ȧ42ȯ⁸P

ลิงก์ monadic ที่ใช้รายการตัวเลขสองตัว

ลองออนไลน์!

อย่างไร?

⁼6,9ȧ42ȯ⁸P - Link: list of numbers [a,b]
 6,9       - 6 paired with 9, [6,9]
⁼          - equals? (non-vectorising) (1 or 0)
     42    - literal answer, 42
    ȧ      - logical and               (42 or 0)
        ⁸  - link's left argument, [a,b]
       ȯ   - logical or                (42 or [a,b])
         P - product                   (42 or a*b)

คุณสามารถใช้?เช่นเดียวกับฉัน ;)
Erik the Outgolfer

Ah เพราะ,เป็นพิเศษในการที่จะเป็นส่วนหนึ่งของรูปแบบตัวอักษร regex ดังนั้น6,9จะแยกเป็นโทเค็นเดียวและรวดเร็วสามารถรวมกับ$ คุณให้เหตุผลว่าหรือลองและสังเกตว่าใช้งานได้หรือไม่
Jonathan Allan

1
ฉันให้เหตุผลว่า
Erik the Outgolfer


2

SILOS , 81 67 ไบต์

readIO
J=i
readIO
a=(J-6)^2+(i-9)^2
a/a
a-1
a*12
x=J*i+a
printInt x

ลองออนไลน์!

ในบางแง่การเพิ่มฟังก์ชั่นเป็นประตู NAND ที่น่าสนใจใน SILOS

-14 ไบต์ขอบคุณ @Leaky Nun

โดยพื้นฐานแล้วเราสร้างตัวเลข "a" ซึ่งเป็น 0 (falsy) iff j คือ 6 และ i = 9 จากนั้นเราหารด้วยตัวมันเองลบหนึ่งแล้วคูณด้วย 12 เพื่อเพิ่มผลิตภัณฑ์ของเรา

หาก "a" คือ 1 หลังจากลบหนึ่งและคูณมันจะกลายเป็น no-op อย่างไรก็ตามในกรณีที่ a คือ 0, 0/0 เงียบพ่นข้อผิดพลาด (ซึ่งถูกจับโดยอัตโนมัติอย่างน่าอัศจรรย์) กลายเป็น 0 แล้วกลายเป็น -1 แล้วเราก็ลบ 12 จากผลิตภัณฑ์ของเรา




@LeakyNun ooh นั่นเป็นคนฉลาด
Rohan Jhunjhunwala

อันที่จริงจะกลายเป็น0/0 0
Leun Nun

@LeakyNun ฉันหมายถึงการพูดว่ากลายเป็น 0 แล้วลดลง เครื่องประกอบ
Rohan Jhunjhunwala


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