เปรียบเทียบสองตัวเลขที่กำหนดเป็นสตริง


21

ฉันมีปัญหาในที่ทำงาน ฉันต้องการเปรียบเทียบตัวเลขสองตัวที่มาเป็นสตริงจากฐานข้อมูลที่แตกต่างกันสองตัว ตัวเลขอาจมาพร้อมกับเลขศูนย์นำหน้าและ / หรือช่องว่างนำหน้า / ต่อท้าย ดังนั้นฉันอาจมี"0001 "จากฐานข้อมูลหนึ่งและ" 1 "จากอีกฐานหนึ่ง

ฉันแก้ไขปัญหาใน C # ด้วยรหัสต่อไปนี้:

Func<string, string, bool> f = (a,b) => int.Parse(a.Trim()) == int.Parse(b.Trim())

ความท้าทาย

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

  • อินพุตจะต้องมีสองสตริงหรือเทียบเท่าในภาษาของคุณ (อาร์เรย์ถ่านเป็น OK) และพวกเขามักจะเป็นตัวแทนของค่าจำนวนเต็มมากกว่าศูนย์
  • ผลลัพธ์จะต้องเป็นค่าที่สอดคล้องกันสองค่าใด ๆ ที่แทนค่าจริงและค่าเท็จ

ตัวอย่าง

A          B          Result
----------------------------
"0001"     "1    "    true
"1450"     "1450 "    true
"0010001 " " 10001  " true
"0010000"  "  10  "   false
"101023"   "101024"   false

นี่คือดังนั้นอาจเป็นรหัสที่สั้นที่สุดสำหรับแต่ละภาษาที่ชนะ!



8
อย่างน้อยมันก็ไม่ได้รับแรงบันดาลใจจากลูก ๆ ของคุณในครั้งนี้ ...
caird coinheringaahing

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

ดูเหมือนว่าความท้าทายที่ได้แรงบันดาลใจจากการทำงานของฉันนั้นง่ายเกินไปหรือยากเกินไป ...
ชาร์ลี

@ Jonathanathan ไม่, สตริงอินพุตแต่ละรายการจะแสดงเพียงหนึ่งหมายเลขเท่านั้น จะไม่มีช่องว่างใด ๆ ระหว่างสตริง
ชาร์ลี

คำตอบ:


22

Javascriptขนาด 11 ไบต์

a=>b=>+a==b

การใช้งานจาวาสคริปต์ในทางที่ผิดกฎนิด ๆ +acoerces aเป็นชนิดตัวเลข

-6 bytesขอบคุณShaggyและMartin Ender ♦

ยังใช้เวลาเย็นโดยLiefdeWen :

a=>b=>~~a==~~b

2
ยินดีต้อนรับสู่ PPCG คุณสามารถทำสิ่งนี้ได้ใน 11 ไบต์โดยใช้การ currying และโดยการแปลงเพียงหนึ่งในอินพุตเป็นจำนวนเต็ม: tio.run/##y0osSyxOLsosKNHNy09J/ …โปรดทราบว่าเว้นแต่ว่าฟังก์ชันจะอ้างอิงตัวเองคุณไม่จำเป็นต้องรวมตัวแปร การกำหนดจำนวนไบต์ของคุณ
Shaggy

2
ยินดีต้อนรับสู่ PPCG! ฟังก์ชั่นที่ไม่มีชื่อจะมีการปรับเพื่อให้คุณไม่จำเป็นc=และ currying ยังเป็นที่ดีเพื่อให้คุณสามารถใช้แทนa=>b=>... (a,b)=>สุดท้ายจาวาสคริปต์ของฉันก็ค่อนข้างสนิม แต่ฉันคิดว่าบางอย่างเช่น!(a-b)นั้นจะใช้งานได้เช่นกัน?
Martin Ender

1
ดูเคล็ดลับสำหรับการเล่นกอล์ฟใน ES6 (และเคล็ดลับการเล่นกอล์ฟ JS ทั่วไป ) สำหรับเคล็ดลับเพิ่มเติมเพื่อบีบไบต์ออกจากการแก้ปัญหาของคุณ
Shaggy

1
รุ่นเจ๋ง ๆ เท่ ๆ แต่เจ๋งอยู่ในขอบเขตลองป้อน '9123456789' และ '533522197' สิ่งเหล่านี้คือการแปลสตริงของค่าจำนวนเต็มอยู่ในช่วงของจำนวนเต็มที่ถูกต้องใน javascript (แต่มากกว่า 32 บิต)
edc65

1
ข้อความของคุณไม่ตรงกับรหัสอีกต่อไป ไม่มีการลบ คุณกำลังบีบบังคับเป็นชนิดที่เป็นตัวเลขที่มีเอกa +
Peter Cordes

18

05AB1E , 1 ไบต์

Q

ลองออนไลน์!

คำอธิบาย

การเปรียบเทียบเพื่อความเท่าเทียมQจะพยายามประเมินสตริงโดยอัตโนมัติก่อนเปรียบเทียบ


จริงๆเหรอ? และฉันคิดว่า|0+Qสั้นพอ ...
Erik the Outgolfer

18

ภาษาสคริปต์การทำงานของ Flashpoint 33 ไบต์

f={call format(["%1==%2"]+_this)}

โทรด้วย:

hint format["%1\n%2\n%3\n%4\n%5",
    ["0001", "1    "] call f,
    ["1450", "1450 "] call f,
    ["0010001 ", " 10001  "] call f,
    ["0010000", "  10  "] call f,
    ["101023", "101024"] call f]

เอาท์พุท:

รุ่นทางเลือก (41 ไบต์):

f={{t=call _x;r=t==s;s=t}forEach _this;r}

ยังคง 5 ไบต์สั้นกว่าตรงไปตรงมามากขึ้น f={t=_this;call(t select 0)==call(t select 1)}

39 ไบต์:

f={{t=call _x;r=t==s;s=t}count _this;r}

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


7
ฉันชอบสถานการณ์ที่หลากหลายที่คุณจับภาพหน้าจอโค้ดของคุณมา
Janurous

11

แท็กซี่ 488 ไบต์

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Equal's Corner.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:n 1 l 1 l 1 l.Switch to plan "b" if no one is waiting.'1' is waiting at Writer's Depot.[b]'0' is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 1 r.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.

ลองออนไลน์!

Ungolfed:

Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Equal's Corner.
Pickup a passenger going to Equal's Corner.
Go to Equal's Corner: north 1st left 1st left 1st left.
Switch to plan "b" if no one is waiting.
'1' is waiting at Writer's Depot.
[b]
'0' is waiting at Writer's Depot.
Go to Writer's Depot: north 1st left 1st right.
Pickup a passenger going to Post Office.
Go to Post Office: north 1st right 2nd right 1st left.

แท็กซี่ค่อนข้างเหมาะสมกับความท้าทายนี้เพราะสตริงเป็นประเภทอินพุตหรือเอาต์พุตเดียวที่อนุญาต The Babelfisheryคือสิ่งที่แปลงสตริงเป็นตัวเลข (และในทางกลับกัน) และมันจัดการกับการแยกช่องว่างทั้งหมดและเลขศูนย์นำหน้า นอกจากนี้ยังจะจัดการกับจำนวนลบหาก-เป็นทันทีก่อนหลักแรก หลังจากนั้นให้Equal's Cornerตรวจสอบค่าสองค่าต่อกันและWriter's Depotให้ผลลัพธ์ในรูปแบบสตริง เอาท์พุท1สำหรับความจริงและ0เพื่อความเท็จ


1
ทำได้ดีนี่! เพิ่งออกจากความอยากรู้อยากเห็นว่าทำไมเป็นหน้าต่างการแก้ปัญหาการแสดงข้อความerror: The boss couldn't find your taxi in the garage. You're fired!?
Charlie

6
@Charlie Taxi ต้องการให้คุณขับรถกลับไปที่โรงจอดรถแท็กซี่เมื่อเสร็จสิ้นเส้นทางของคุณ หากคุณไม่นำรถกลับมาคุณจะถูกไล่ออก (คุณต้องแน่ใจว่าจะหยุดและเติมเชื้อเพลิงทุกครั้งแล้วหรือคุณหมดแก๊ส) ในคำถามรหัสกอล์ฟที่ไม่อนุญาตให้ส่งออกไปยัง STDERR ฉันมักไม่ต้องกังวลกับการถูกไล่ออก คุณสามารถเพิ่มสิ่งนี้เพื่อกำจัดข้อผิดพลาดหากคุณไม่ต้องการที่จะสูญเสียงานของคุณ:Go to Taxi Garage:n 1 r 1 l 1 r.
วิศวกร Toast

คำตอบนี้และความเห็นของมันมีลักษณะเหนือจริงทั้งหมด ฉันรักชุมชนนี้
ขาขวา

@RightLeg โปรแกรมแท็กซี่ที่ฉันชอบที่สุดที่ฉันเคยเขียนนั้นใช้เวลาสองสัปดาห์และมีการดีบั๊กมากมาย คุณต้องการการเดินทางจริงๆเหรอ? ตรวจสอบเช็คสเปียร์
Engineer Toast

10

C (gcc) , 27 ไบต์

f(s,t){s=atoi(s)==atoi(t);}

กับ -O0 (ซึ่งเป็นการตั้งค่าเริ่มต้น)

ลองออนไลน์!

C, 32 ไบต์

f(s,t){return atoi(s)==atoi(t);}

ลองออนไลน์!


2
@Charlie ใน C สตริงเป็นอาร์เรย์ของcharและเมื่อคุณส่งอาร์เรย์ไปยังฟังก์ชันที่จริงคุณเพียงแค่ส่งตัวชี้ไปยังองค์ประกอบแรกของอาร์เรย์ นี่คือตัวชี้ไปยังอาร์เรย์จะถูกแปลงโดยปริยายจำนวนเต็มเมื่อส่งผ่านไปยังฟังก์ชั่นและจำนวนเต็มจะถูกแปลงกลับไปชี้เมื่อโทรchar atoi
Steadybox

1
ซึ่งอาจระเบิดขึ้นอย่างน่ากลัวบนแพลตฟอร์มที่ชี้มีความกว้างมากกว่า ints ... เพียงแค่บอกว่าของหลักสูตรที่ดีของมันสำหรับมาตรฐานเว็บไซต์ที่นี่ :)
เฟลิกซ์ Palmen

2
หากคุณต้องการใช้อึไร้สาระเช่นs=foo;แทนที่จะreturn foo;ต้องติดป้ายกำกับนี้เป็น "x86 gcc ด้วยการปิดใช้งานการเพิ่มประสิทธิภาพ" ไม่ใช่แค่ "C" เนื่องจากรหัสนี้ไม่ส่งคืนค่ายกเว้นเป็นสิ่งประดิษฐ์ที่นำไปใช้งาน
Peter Cordes

2
ฉันไปดูเพื่อดูว่ามีสถาปัตยกรรมใดที่s=retval;แทนที่จะreturn retval;ทำลายลงจริงหรือไม่ ดูเหมือนว่าตรรกะภายในของ gcc (มี-O0เพียง) จริง ๆ แล้วถือว่านิพจน์สุดท้ายเป็นค่าส่งคืนอาจเป็นวิธีเดียวกับที่นิพจน์คำสั่งของ GNU Cทำงาน (แต่มันไม่จำเป็นs=) บน ARM32 มันจะคำนวณ==ผลลัพธ์r3แล้วใช้ส่วนเสริมmov r0, r3เพื่อทำให้ค่าส่งคืนนั้นเป็นจริง! ดังนั้นจึงไม่ใช่แฮ็คเฉพาะของ x86 แต่เป็นgcc -O0แฮ็คที่ gcc ดูเหมือนจะออกไปให้การสนับสนุน
Peter Cordes

2
@ KenY-N คุณกำลังพลาดจุด c code golf ทั้งหมด มันเกี่ยวกับการค้นหาเคสแฮ็กที่เฉพาะเจาะจงซึ่งคุณสามารถป้อนจำนวนโค้ดขั้นต่ำและรับผลลัพธ์ที่คุณต้องการโดยไม่ต้องมอบประสบการณ์พกพา

8

J , 4 ไบต์

=&do

เปรียบเทียบ=หลังจากการประเมิน& doสามารถ=&". ลองออนไลน์ได้!


สิ่งที่น่าสนใจพอจะใช้ได้กับทั้งเชิงลบเนื่องจากภาษาอื่น ๆ เข้าใจพวกเขา (เช่น-10) และเชิงลบตามที่ J เข้าใจพวกเขา (เช่น_10) เนื่องจากวิธีการ-ทำงานแบบ monadic
โคล

6

เรติน่า 11 ไบต์

.+
$*
D`
¶$

ลองออนไลน์!

อินพุตถูกแยก linefeed แต่ชุดทดสอบใช้การแยกด้วยเครื่องหมายจุลภาคเพื่อความสะดวก พิมพ์1เพื่อความเท่าเทียมกันและ0เพื่อความไม่เท่าเทียมกัน

คำอธิบาย

.+
$*

แปลงแต่ละบรรทัดเป็นเอก สิ่งนี้จะละเว้นศูนย์นำและช่องว่าง

D`

Deduplicate: ล้างบรรทัดที่สองหากทั้งคู่เหมือนกัน

¶$

ตรวจสอบว่าสตริงสิ้นสุดใน linefeed




3

รูปสามเหลี่ยม 17 ไบต์

..)..
.Ii).
@Ii=.

ลองออนไลน์!

ความเป็นรูปสามเหลี่ยมเป็นครั้งเดียวในการแข่งขัน!

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

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

..).. || Push a 0 onto the stack.
.Ii   || Get the 0th input and cast it to an integer.
   ). || Push another 0 onto the stack.
@I    || Increment the ToS => 1. Get the first input.
  i=. || Then cast it to an integer and compare their equality.

3

อลิซขนาด 7 ไบต์

X/n
o@i

ลองออนไลน์!

ตัวคั่นที่ไม่ใช่ตัวเลขใด ๆ ทำงานได้ พิมพ์1เพื่อความเท่าเทียมกันและ0อย่างอื่น

คำอธิบาย

X   XOR, does nothing.
/   Switch to Ordinal mode.
i   Read all input as a string.
/   Switch to Cardinal mode.
X   XOR. Implicitly finds all integers in the string and pushes them separately
    onto the stack. The XOR gives 0 if the values are identical.
n   Logical NOT. Gives 1 for equal inputs and 9 otherwise.
/   Switch to Ordinal.
o   Print the 0 or 1 as a string.
/   Switch to Cardinal.
@   Terminate the program.



3

jq, 24 ตัวอักษร

map(tonumber)|.[0]==.[1]

2 สายจะถูกส่งผ่านเป็นรายการของอาร์เรย์

วิ่งตัวอย่าง:

bash-4.4$ jq 'map(tonumber)|.[0]==.[1]' <<< '["0010001 ", " 10001  "]'
true

bash-4.4$ jq 'map(tonumber)|.[0]==.[1]' <<< '["0010000", "  10  "]'
false

ลองออนไลน์! ( ทุกกรณีทดสอบ )



3

PowerShellขนาด 20 ไบต์

param($a,$b)+$a-eq$b

คล้ายกับคำตอบ JavaScript นานกว่าเพราะ PowerShell ไม่มีการแก้ตัว ใช้+เพื่อส่งสตริงแรกไปเป็นจำนวนเต็มจากนั้นค่า-eqคงที่จะแปลงสตริงที่สองเป็นจำนวนเต็มโดยอัตโนมัติ เอาต์พุตเป็น True / False

ลองออนไลน์!


3

PowerShellขนาด 19 ไบต์

$args-join'-eq'|iex

ลองออนไลน์!

-joinอาร์กิวเมนต์ Array ( $args) พร้อมกับการแทนสตริงของโอเปอเรเตอร์การเปรียบเทียบ ( -eq) จากนั้นประเมินค่านิพจน์ด้วยInvoke-Expression( iex)


น่าสนใจ ฉันสงสัยว่าคุณจะได้รับโดยไม่จำเป็นต้องส่งไปยังจำนวนเต็มในขณะที่ฉันพักถ้าฉันลบ+เพราะมันทำการตรวจสอบความเท่าเทียมกันของสตริง
AdmBorkBork

@AdmBorkBork เพราะฉันสร้างรหัส PowerShell ขึ้นมาจากนั้นจึงเรียกใช้งานและเนื่องจากการนำเลขศูนย์และช่องว่างนำหน้า / ช่องว่างต่อท้ายไม่สำคัญสำหรับล่ามมันจึง "ทำงานได้" ถ้า 2 หมายเลข00009 และ077 แล้วรหัสผลลัพธ์เป็น00009 -eq077 ชิ้นส่วนที่ถูกต้องสมบูรณ์ของรหัส คุณกำลังจัดการกับสตริงที่รันไทม์โดยตรงดังนั้นคุณต้องส่งมันก่อนเพื่อให้การดำเนินการเป็นตัวเลข
นักเทศน์

ถูกต้องใช่ว่าเหมาะสมแล้ว ขอบคุณสำหรับคำอธิบาย
AdmBorkBork

3

Q (Kdb +), 13 ไบต์

=/["J"$(x;y)]

คำอธิบาย

(x; y): รายการของอินพุตทั้งสอง

"J" $: แคสต์แต่ละอินพุตเป็นชนิดยาว (7j) จากสตริง (10c) ซึ่งสามารถตีความได้อย่างถูกต้อง
พื้นที่สีขาวและนำ 0s ได้

= /: ตรวจสอบความเท่าเทียมกันขององค์ประกอบในรายการ (แต่ละคู่ที่ตามมา)
เนื่องจากมีเพียงหนึ่งคู่ให้ส่งกลับค่าบูลีนเดี่ยว 0b / 1b


ยินดีต้อนรับสู่ PPCG! โดยปกติแล้วลิงก์ไปยังล่าม / คอมไพเลอร์ออนไลน์จะได้รับการชื่นชมและหากไม่ชัดเจนก็สามารถอธิบายได้เช่นกัน
FantaC

Thanks! Explanation added there. I doubt there is an online interpreter for q, I did a quick look and couldn't find one.
Sidney

I would say that this should be written as a lambda including the curly braces, i.e. {=/["J"$(x;y)]} for 15 bytes... Although for 8 bytes you could have this: (~/)"J"$ if you are just using the REPL and passing the inputs as a list of strings... or {(~/)"J"$x} for 11 as a function.
streetster

3

T-SQL, 35 bytes

Per our standards, data is input via pre-existing table t with varchar fields a and b.

    SELECT IIF(ABS(a)=ABS(b),1,0)FROM t

Returns 1 if they match, 0 if they don't.

A few of SQL's mathematical functions (including ABS, FLOOR and CEILING) will do an implicit conversion to numeric if given string parameters, this is shorter than an explicit CAST(a AS INT) or CONVERT(INT,b), and works in this case since we know the input values are always positive.

IIF is specific to MS SQL 2012 and above, so no guarantee about other implementations.


3

Excel VBA, 27 16 Bytes

-9 Thanks to @Nayrb and @TaylorScott

[C1]=[A1]-[B1]=0

Where you input the values on the Cells with 'string.

Where x and y are the input Strings and z is a Boolean output.

If CInt(x)=CInt(y) Then z=1

Using CInt


1
Why not: z=x-y=0?
Nayrb

Unfortunately this solution is invalid as it does not take input and rather relies on having predefined values (which has been deemed against the community's rules) and outputing to a variable (which is also against community rules)
Taylor Scott

As for a valid solution perhaps a vbe immediate window function such as ?[Int(A1)=Int(B1)] that takes input from the ranges A1 and B1 and outputs to the VBE immediate window
Taylor Scott




2

Gema, 21 characters

*\n*=@cmpn{*;*;0;1;0}

No boolean in Gema. As the @get-switch{}/@set-switch{} functions use 0 and 1 to represent switch statuses, also used 0 and 1.

The 2 strings are passed on separate input lines.

Sample run:

bash-4.4$ gema '*\n*=@cmpn{*;*;0;1;0}' <<< $'0010001\n10001  '
1

bash-4.4$ gema '*\n*=@cmpn{*;*;0;1;0}' <<< $'0010000\n  10  '
0



2

Attache, 11 bytes

Same@Map&:N

Try it online!

This takes an array of strings, such as V["0001", "1 "]. Simply stated, Map&:N is a function that maps N over its argument, and Same checks that the array contains only equal members. (Fun fact: this function works for more than 2 string arguments.)


2

SNOBOL4 (CSNOBOL4), 42 bytes

	OUTPUT =EQ(EVAL(INPUT),EVAL(INPUT)) 1
END

Try it online!

Outputs 1 for truthy, nothing for falsey. Since (space) is the concatenation operator in SNOBOL, EVALing a number with leading/trailing spaces yields the number itself, and it also neatly takes care of any leading zeroes. EQ tests for numerical equality, conditionally setting OUTPUT to 1 on Success.


2

Sinclair ZX81/Timex TS1000/1500 BASIC, ~29 tokenized BASIC bytes

New solution thanks to Neil (thanks for the tip).

 1 INPUT A$
 2 INPUT B$
 3 PRINT VAL A$=VAL B$

This solution requires user input, so enter in two strings with white spaces and/or leading zeros, or enter two strings of non-equal numeric value; 0 is false and 1 is true once line three has compared the value of each string entered.

Old solution: Sinclair ZX81/Timex TS1000/1500 BASIC, ~46 tokenized BASIC bytes

 1 LET A$=" 001 "
 2 LET B$="1"
 3 PRINT (VAL A$=VAL B$)

The actual check is done in line three, which is only ~16 tokenized BASIC bytes; so entering each test case pair using direct mode will save ~30 bytes from the listing. Note that this byte count does not include the var stack.


1
Shouldn't you use INPUT A$ and INPUT B$? Also I don't think you need the ()s.
Neil

Yes, I could use that also - I just wanted a proof of concept
Shaun Bebbers

2

APL (NARS2000), 7 bytes

=⍥⍎

Well, yes, I do know NARS2000 can't compete over Dyalog here since it uses Unicode, but I thought I'd rather show off (called Composition in NARS2000, even though it's actually unrelated to function composition), something Dyalog doesn't have as a built-in and I haven't ever seen used here. In Dyalog, it has to be implemented as {(⍵⍵⍺)⍺⍺⍵⍵ ⍵}. What it does is call the right operand monadic function on both the left and right argument, and then call the left operand dyadic function on the results.

Here, the right operand is (Execute, i.e. eval) and the left operand is = (Equal To, i.e. check if its arguments are equal).


Are composition and execute supposed to render as whitespace?
John Dvorak

@JohnDvorak um, no? They're not whitespace, the second char is U+2365 APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS and the third is U+234E APL FUNCTIONAL SYMBOL DOWN TACK JOT.
Erik the Outgolfer

@JohnDvorak Whatever font you're viewing this in may not have symbols for those codepoints.
Οurous

@Οurous I highly suspect that's the case too, but if you're using well-updated software you shouldn't have any problem viewing such chars.
Erik the Outgolfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.