ท้าทาย:
มีจิ๊กซอว์งี่เง่าเวียนอยู่บนเครือข่ายสังคมที่อ่าน:
8 + 2 = 16106
5 + 4 = 2091
9 + 6 = ?
ใช้ฟังก์ชั่นหรือผู้ประกอบการที่เมื่อได้รับตัวเลขสองจำนวนเต็มบวกx
และy
เช่นว่าx > y > 0
ถัวเฉลี่ยตอบที่ถูกต้องเป็นจำนวนเต็มซึ่งตัวเลขคำตอบเป็นตัวเลขของx * y
ตามด้วยตัวเลขของตามด้วยตัวเลขของx + y
x - y
ง่ายมาก.
กฎ:
- ช่องโหว่มาตรฐานไม่ได้รับอนุญาต
- นี่คือโค้ดกอล์ฟที่สั้นที่สุดในหน่วยไบต์
- ไม่จำเป็นต้องมีการตรวจสอบความถูกต้องของข้อมูลอินพุต โปรแกรมนี้อาจมีปัญหาหรือคืนขยะเมื่อได้รับการป้อนข้อมูลที่ไม่ถูกต้อง
- คุณได้รับอนุญาตให้ใช้ฟังก์ชั่นตัวเลขและตัวดำเนินการ (รวมถึงจำนวนเต็มและจุดลอยตัว, ฟังก์ชั่นห้องสมุดคณิตศาสตร์และฟังก์ชั่นอื่น ๆ ที่ยอมรับและส่งกลับตัวเลข)
- คุณได้รับอนุญาตให้ใช้ฟังก์ชั่นที่คืนค่าตัวเลขเป็นตัวเลขหากมี
- คุณไม่ได้รับอนุญาตให้ใช้สตริงหรือการต่อข้อมูลประเภทใดก็ได้ในรหัสของคุณ
- ผลลัพธ์อาจถูกส่งคืนหรือผลักไปที่สแต็กแล้วแต่ว่าจะใช้งานในภาษาใด ผลลัพธ์ต้องเป็นตัวเลขจำนวนเต็มไม่ใช่สตริง
รหัสตัวอย่าง:
รหัสต่อไปนี้จะสร้างผู้ประกอบการ dyadic X
ชื่อ
X ← {(⍺-⍵) + ((⍺ + ⍵) × 10 * 1 + ⌊10⍟⍺-⍵) + ⍺×⍵× 10 * (2 + + ⌊10⍟⍺⍵) + ⌊10⍟⍺- ⍵}
คำอธิบาย:
ใน APL คุณประเมินจากขวาไปซ้าย
⍺ and ⍵
เป็นตัวถูกดำเนินการทางซ้ายและขวาตามลำดับ⌊10⍟⍺-⍵
อ่าน:floor of log10(⍺-⍵)
. ก่อนอื่นทำการ substraction แล้วลอการิทึมจากนั้นทำการปูพื้น จากขวาไปซ้าย log10 เสร็จสิ้นเพื่อนับตัวเลขของ⍺-⍵
(คุณต้องบวก 1 หลังจากนั้น)⍺×⍵×10*(...)
อ่าน:10 to the (...)th power, multiplied by ⍵, multiplied by ⍺
ดังนั้น
⍺×⍵×10*(2+⌊10⍟⍺+⍵)+⌊10⍟⍺-⍵
ผลิตภัณฑ์คือเลื่อนไปทางซ้ายโดยผลรวมของจำนวนตัวเลขของผลรวมและความแตกต่าง การคูณด้วยกำลัง 10 จะเลื่อนจำนวนเต็มไปทางซ้าย((⍺+⍵)×10*1+⌊10⍟⍺-⍵)
คือผลรวมเลื่อนไปทางซ้ายตามจำนวนตัวเลขของความแตกต่าง(⍺-⍵)
คือความแตกต่าง ไม่จำเป็นต้องเปลี่ยนที่นี่X←{...}
เป็นวิธีที่คุณกำหนดโอเปอเรเตอร์ใน APL
ตัวอย่าง:
8 X 2
16106
5 X 4
2091
9 X 6
54153
GNU dc:
รหัสต่อไปนี้สร้างแมโครชื่อa
:
[sysx10lxly-dseZdsclxly+dsd+Z1+^lxly**10lc^ld*+le+]sa
คำอธิบาย:
sx
และsy
วางองค์ประกอบจากสแต็กและบันทึกลงในรีจิสเตอร์x
และy
ตามลำดับlx
และly
โหลดองค์ประกอบจากการลงทะเบียนx
และy
ตามลำดับและผลักมันไปยังสแต็คd
ทำซ้ำองค์ประกอบสุดท้ายในสแต็ก^
คำนวณพลังของตัวเลขสองจำนวนZ
ดึงตัวเลขและส่งกลับจำนวนหลัก สิ่งนี้ทำได้เนื่องจากdc
ไม่มีฟังก์ชันลอการิทึม[...]sa
a
เก็บแมโครในการลงทะเบียนla
โหลดมันx
เรียกใช้แมโครที่ด้านบนสุดของสแต็ก
ตัวอย่าง:
8 2 laxn
16106
5 4 laxn
2091
9 6 laxn
54153