หาคู่ของคุณ


20

ท้าทาย

รับรายการโดยพลการของ 2 tuples และองค์ประกอบหนึ่งในหนึ่งในสิ่งอันดับผู้ส่งออก "พันธมิตร" ของมันคือให้aและเอาท์พุท[(i,j),...,(a,b),...,(l,m)] bคุณสามารถถือว่าทูเปิลทั้งหมดนั้นมีเอกลักษณ์และองค์ประกอบทั้งหมดในทูเปิลนั้นเป็นสตริง นอกจากนี้สมมติว่าคุณไม่ได้มีทั้งและ(x,y)(y,x)

กรณีทดสอบ

Input                                                           Output

[("(", ")"), ("{", "}"), ("[", "]")], "}"                       "{"
[("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")], "Even"  "Meta"
[("I", "S"), ("M", "E"), ("T", "A")], "A"                       "T"
[("test", "cases"), ("are", "fun")], "test"                     "cases"
[("sad", "beep"), ("boop", "boop")], "boop"                     "boop"

ไบต์ที่น้อยที่สุดจะชนะ!


นอกจากนี้จะทำอย่างไรถ้าข้อมูลปรากฏขึ้นหลายครั้งหรือไม่ปรากฏขึ้น
Luis Mendo

ฉันไม่คิดว่าเราสามารถป้อนข้อมูลเป็นรายการแบบแบนได้ใช่ไหม ยกตัวอย่างเช่นแทน[a, b, c, d] [(a, b), (c, d)]มันจะลบคำตอบของฉันออกไปเป็นตัน ๆ : P
สิ้นเชิงมนุษย์

ฉันได้แก้ไขเพื่อหวังว่าจะเคลียร์บางสิ่งและได้เพิ่มกรณีทดสอบ อย่าลังเลที่จะย้อนกลับไปถ้ามีอะไรผิดปกติ
สิ้นเชิงมนุษย์

@totallyhuman ฉันเฉพาะถามเกี่ยวกับ(a,a)และบอกว่ามันจะไม่เกิดขึ้น เนทยังแก้ไขคำถามเพื่อระบุข้อเท็จจริงนี้ อย่างไรก็ตามคุณได้เพิ่มกรณีทดสอบด้วยรายการดังกล่าวและแก้ไขข้อกำหนดการกลับรายการการตัดสินใจนี้ - เพราะเหตุใด มันหักคำตอบมากมาย
Jonathan Allan

1
@tallyallyhuman ฉันเอามันไปหมายถึง "คืนอะไรผิดพลาดอะไร" โดยเฉพาะอย่างยิ่งตั้งแต่โพสต์ได้รับการแก้ไขแล้วเพื่อบอกว่าทุกอย่างจะไม่ซ้ำกัน
Jonathan Allan

คำตอบ:


8

Japtap, 6 ไบต์

ทำงานร่วมกับสตริงหรือจำนวนเต็ม

æøV kV

ทดสอบมัน


คำอธิบาย

การป้อนข้อมูลโดยปริยายของอาร์เรย์และสตริงU / จำนวนเต็มV

æ

รับองค์ประกอบแรก (subarray) ในUที่ ...

øV

Vมี

kV

ลบVและส่งคืนอาเรย์องค์ประกอบเดี่ยวที่ได้ผลลัพธ์โดยปริยาย


นั่นคือ ... ฉันลองใช้สถานการณ์ที่แน่นอนอินพุตเดียวกันและทั้งหมด ฉันต้องพลาดบางสิ่งบางอย่าง ... แก้ไข: ใช่แล้วฉันใช้fแทนæตอนนั้น Duh: P
ETHproductions

@ ETHproductions: ทำการเปลี่ยนแปลงที่ดี - โดยปกติฉันเป็นคนที่ลืมเรื่องæและพยายามที่จะยุ่งเหยิงด้วยf! : D
Shaggy

8

Haskell , 33 ไบต์

x!((a,b):c)|x==a=b|x==b=a|1<2=x!c

ลองออนไลน์!

กำหนดตัวดำเนินการไบนารี!ซึ่งใช้เป็นอาร์กิวเมนต์ซ้ายเป็นค่าxประเภทτและอาร์กิวเมนต์ที่ถูกต้องคือรายการของสิ่งอันดับ (τ, τ) รูปแบบความหมายตรงกับส่วนหัว(a,b)และส่วนท้ายcของรายการที่กำหนด; ถ้าx==aจากนั้นbจะถูกส่งกลับ; ถ้าเป็นเช่นx==bนั้นaจะถูกส่งกลับและมิฉะนั้นเราจะดูในรายการที่เหลือโดยเรียกซ้ำ

  'f' ! [('a', 'b'), ('c', 'd'), ('e', 'f'), ('g', 'h')]
 'f' ! [('c', 'd'), ('e', 'f'), ('g', 'h')]
 'f' ! [('e', 'f'), ('g', 'h')]
 'e'

(หากไม่มี "พันธมิตร" ในรายการสิ่งนี้จะผิดพลาดเพราะเราไม่ได้กำหนดสิ่งที่x![]ควรจะเป็น)


5

JavaScript (ES6), 39 ไบต์

e=>g=([[b,c],...a])=>e==b?c:e==c?b:g(a)

รับรายการและอาร์เรย์ของอาร์เรย์เป็นอาร์กิวเมนต์ที่ curried รุ่นที่ไม่ใช่แบบเรียกซ้ำที่ดีที่สุดที่ฉันทำได้คือ 44 ไบต์:

e=>a=>a.find(a=>a.includes(e)).find(b=>b!=e)

นี่คือวิธีแก้ปัญหาแบบไม่เรียกคืนขนาด 41 ไบต์:a=>b=>a.map(e=>b=e[1-e.indexOf(b)]||b)&&b
Rick Hitchcock

คุณ ... ในที่สุดคุณก็ยอมเข้ามามีส่วนร่วม! : o
Shaggy

@Shaggy ปกติฉันไม่รำคาญกับประเภทการแกง(a,b)=>=> a=>b=>แต่เวอร์ชันที่ไม่ใช่แบบเรียกซ้ำเริ่มจากเวอร์ชันแบบเรียกซ้ำซึ่งถูก curried เพราะฉันสามารถบันทึก 2 ไบต์ในการโทรแบบเรียกซ้ำ หนึ่งไบต์)
Neil

5

MATL , 4 14 5 6 ไบต์

yY=P)u

ลองออนไลน์!

อินพุตเป็นอาร์เรย์[{a;b},{c;d}]ดังนี้ Bytecount ผันผวนอย่างมากในขณะที่ OP พิจารณาว่าอะไรได้รับอนุญาตจริง

y     % Implicitly input tuples T and 'lonely element' E, duplicate from below to get [T E T] on the stack
 Y=   % String comparison, element wise, between T and E. Yields a boolean array with a 1 at the correct location.
   P  % Flip this array vertically, to put the 1 at the 'partner' of E.
    ) % Select this partner from the bottom T.

ฉันเริ่มด้วยเวอร์ชัน 4 ไบต์ที่สามารถจัดการกับสตริงอักขระเดี่ยวซึ่งเป็น testcase เดียวในความท้าทายดั้งเดิม เมื่อเปิดออกมาจะไม่ถูกต้องผมทำรุ่นที่ยาวมาก 14 ไบต์ซึ่งเป็นสิ่งที่ดีและ hacky (ตรวจสอบประวัติการแก้ไข!) ทำให้ผมค้นพบข้อผิดพลาดและหันแล้วออกจะสมบูรณ์ไม่จำเป็นY=กับข้อมูลที่เหมาะสม ทำงานเช่นเดียวกับต้นฉบับ 4 ไบต์ของy=P)ฉัน


4

Python 2 , 37 ไบต์

lambda x,y:dict(x+map(reversed,x))[y]

ลองออนไลน์!

โปรตอน , 31 ไบต์

a,b=>dict(a+map(reversed,a))[b]

ลองออนไลน์!

(คำตอบทั้งสองนี้คล้ายกันมากกับที่ฉันโพสต์ไว้ด้วยกันเพื่อหลีกเลี่ยงการติดอาวุธใหม่)


เปลี่ยนชื่อreversedเป็นreverseใน Proton สำหรับ -1 ไบต์ \ s: P อย่างจริงจังreverseยิ่งขึ้นเป็นชื่อที่ดีกว่ามากไม่ใช่หรือ : P
สิ้นเชิงมนุษย์

@tallyallyafloppydisk อาจจะ / ยักไหล่ แต่ฉันไม่ได้เปลี่ยนชื่อ Python builtins ส่วนใหญ่ที่ถูกพาไปที่ Proton
HyperNeutrino


ขออภัยที่ไม่ดีของฉันไม่สนใจความคิดเห็นนั้น
Sanchises


2

Python 2 , 59 45 42 ไบต์

-14 ไบต์ขอบคุณ Emigna -3 ไบต์ขอบคุณ Maltysen

lambda l,v:sum(l,())[sum(l,()).index(v)^1]

ลองออนไลน์!

ยังคงต้องการใช้การแกงแม้ว่า ; -;



y+[1,-1][y%2]อ้ารู้ว่ามีวิธีการทำที่สั้นกว่า แค่คิดว่ามันไม่ไหวหรอก ... ขอบคุณ!
มนุษย์โดยรวม

2

C ++, 179 ไบต์

#include<vector>
#include<string>
#define S std::string
S f(std::vector<std::pair<S,S>>s,S t){for(auto&a:s){if(a.first==t)return a.second;if(a.second==t)return a.first;}return"";}

C ++ w / ชนิดข้อมูลแผนที่ 162 ไบต์

#include<map>
#include<string>
#define S std::string
S f(std::map<S,S>s,S t){for(auto&a:s){if(a.first==t)return a.second;if(a.second==t)return a.first;}return"";}

ด้วย MSVC รหัสจะคอมไพล์แม้ว่าจะไม่มีการใส่returnคำสั่งสุดท้าย( return"";) มันทำให้รหัส 9 ไบต์จางลงแต่จบโดยฟังก์ชันท้าย (เช่นไม่ออกจากreturnคำสั่งในลูป) โดยไม่มีคำสั่งส่งคืนจะทำให้เกิดพฤติกรรมที่ไม่ได้กำหนดและไม่ทำงานหากอาร์เรย์ tuple ไม่มีองค์ประกอบ "คีย์"


2

PowerShell ขนาด 36 ไบต์

param($a,$c)$a|?{$c-in$_}|%{$_-ne$c}

ค้นหาองค์ประกอบที่มีการป้อนข้อมูลจากนั้นรับองค์ประกอบ 'อื่น ๆ ' โดยไม่รวมอินพุตจากนั้น PowerShell ไม่มีการจัดการอาเรย์ที่น่าทึ่งที่สุด แต่อาจมีการติดตั้งในตัวสำหรับฉันไม่ทราบ

.\Partner.ps1 (("I'm","So"),("Meta","Even"),("This","Acronym")) "Even"
Meta

วิธีการนี้ใช้ไม่ได้กับ("boop", "boop")กรณีทดสอบ
AdmBorkBork

2

Röda 30 ไบต์

f a{[(_+"")[1-indexOf(a,_1)]]}

ลองออนไลน์!

คำอธิบาย:

f a{[(_+"")[1-indexOf(a,_1)]]}
f a{                         } /* Function f(a)                         */
                               /* For each pair _1 in the stream:       */
              indexOf(a,_1)    /*   Index of a in _1 or -1 if not found */
            1-                 /*   Subtract from 1 to get the index of
                                     the other value in the pair or 2 if
                                     a is not in the pair               */
     (_+"")                    /*   Append "" to _1                     */
           [               ]   /*   Get element the other element or "" */
    [                       ]  /*   Push it to the straem               */
                               /* All values in the stream are printed  */

2

Mathematica 27 24 Bytes

Casesเลือกองค์ประกอบของรายการที่ตรงกับรูปแบบ เมื่อใช้กับลูกศรคุณสามารถเปลี่ยนรูปแบบการจับคู่องค์ประกอบ

Cases[{#,x_}|{x_,#}:>x]&

การใช้งาน:

%[3][{{1, 2}, {3, 4}}]

คำอธิบาย: ในตัวอย่างนี้หลังจากพบอาร์กิวเมนต์แรก 3 ฟังก์ชันจะกลายCases[{3,x_}|{x_,3}:>x]เป็นรูปแบบโอเปอเรเตอร์ของCasesนั้นจะถูกนำไปใช้กับอาร์กิวเมนต์ที่ 2 {{1, 2}, {3, 4}}ดังนั้นจึงเลือกคู่หูของ 3 ไม่ว่าจะอยู่ในตำแหน่ง abscissa หรือกำหนดตำแหน่ง โดยเฉพาะอย่างยิ่งฟังก์ชั่นนี้จะแสดงรายการสหายทั้งหมดหากในความเป็นจริงอาร์กิวเมนต์ที่ 1 ปรากฏมากกว่าหนึ่งครั้งภายในอาร์กิวเมนต์ที่ 2 กล่าวอีกนัยหนึ่งนี่จะเกินขอบเขตของคำถามที่กล่าวมาเพียงเล็กน้อย

ร่ายมนตร์ที่ปิดล้อมจะต้องอยู่ในวงเล็บปีกกา บันทึก 3 ไบต์พร้อมคำแนะนำ "Currying" จาก @Notatree


1
หากคุณมีรุ่น 10 และคุณใช้การป้อนข้อมูลโดยcurryingคุณสามารถบันทึก 3 ไบต์: Cases[{#,x_}|{x_,#}:>x]&ใช้เหมือน%[3][{{1,2},{3,4}}]
ไม่ต้นไม้

คุณช่วยอธิบายเรื่องนี้สักหน่อยได้ไหม?
Nate Stemen


2

เยลลี่ 6 ไบต์

ċÞṪ⁻ÞṪ

ลิงค์ dyadic นำรายชื่อพันธมิตรไปทางซ้ายและหุ้นส่วนที่สูญหายทางด้านขวาและส่งคืนพาร์ทเนอร์

ลองออนไลน์!

อย่างไร?

ċÞṪ⁻ÞṪ - Link: list, partners; item, lost-partner
 Þ     - sort (the tuples) by:
ċ      -   count occurrence of lost-partner
  Ṫ    - tail (gets the tuple containing the lost-partner)
    Þ  - sort (that tuple's items) by:
   ⁻   -   not equals (non-vectorising version)
     Ṫ - tail (get the other one, or the rightmost one if they were equla)

สิ่งนี้ไม่ถูกต้องเนื่องจากมีการเพิ่มข้อความทดสอบใหม่
Sanchises

1
ขอบคุณที่ชี้ให้เห็นว่า - ฉันได้แสดงความคิดเห็นภายใต้คำถามถึงบรรณาธิการ (ฉันได้ถามเฉพาะ OP เกี่ยวกับ(a,a)และได้รับการบอกว่าเราไม่จำเป็นต้องจัดการมัน) ฉันแน่ใจว่าฉันสามารถแก้ไขได้ แต่ไม่แน่ใจว่าข้อมูลจำเพาะเป็นไปตามที่ตั้งใจไว้หรือไม่
Jonathan Allan

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

ใช้ได้กับสเป็คใหม่ทันที
Jonathan Allan

นั่นคือการตีความของฉันด้วยความคิดเห็นที่ "ดีมาก" แต่เห็นได้ชัดว่านี่ไม่ใช่กรณี
Sanchises


1

Haskell , 65 62 ไบต์

c#(a,b)|a==c=b|1>0=a
x%l=x#(snd(span(\(a,b)->a/=x&&b/=x)l)!!0)

ลองออนไลน์!

คำอธิบาย

สิ่งนี้ใช้ span เพื่อค้นหาอินสแตนซ์แรกที่ xมีอยู่ใน tuple จากนั้นจะคว้าองค์ประกอบแรกของ tuple หากไม่เท่ากันและที่สองเป็นอย่างอื่น

Haskell Lambdabot, 59 56 bytes

c#Just(a,b)|a==c=b|1>0=a
x%l=x#find(\(a,b)->a==x||b==x)l

ลองออนไลน์!

คำอธิบาย

การใช้งานนี้Data.Listของfirstฟังก์ชั่นจะลดลงในไบต์ที่ใช้โดย(!!0).snd.spanแต่เพราะfirstผลตอบแทนMaybeที่เราจะต้องเพิ่มการแข่งขันรูปแบบของเราในJust#


2
อย่าคิดมาก… x!((a,b):c)|x==a=b|x==b=a|1<2=x!cคือ 33 ไบต์
ลินน์

1
@Lynn ไปข้างหน้าและโพสต์มัน ฉันรู้สึกโง่เล็กน้อยที่ไม่ได้คิด แต่มันเป็นคำตอบของคุณ
ข้าวสาลีตัวช่วยสร้าง

ยุติธรรมโพสต์ ^^
ลินน์

1

05AB1E , 7 ไบต์

.åÏ`¹K`
  Ï      # keep only pairs that contain the first input
   `     # flatten
    ¹K   # remove the first input
      `  # flatten

ลองออนไลน์!

ทางเลือก 7 โซลูชันไบต์

˜DIkX~è
˜        # deep flatten
 D       # duplicate
  Ik     # get the index of the second input in this list
    X^   # XOR with 1
      è  # get the element at this index

ลองออนไลน์!


˜D²k>èสำหรับ 6 ยกเว้นว่ามีเหตุผลเฉพาะสำหรับ XOR'ing ด้วย 1
Magic Octopus Urn

@MagicOctopusUrn: เหตุผลก็คือแม้ดัชนีควรจะลดลงและเพิ่มดัชนีแปลก ๆ
Emigna

ยกเว้นย้อนกลับของสิ่งที่ผมเขียนมี ...
Emigna


1

Java 8, 78 ไบต์

แลมบ์ดา (curried) จากStream<List<String>>ไปยังแลมบ์ดาจากStringถึงString(แม้ว่าการพิมพ์โดยนัยเกิดขึ้นเพื่อให้สิ่งนี้สามารถทำงานกับรายการที่ต้องการได้) ภาษาไม่มีคลาส tuple โดยเฉพาะและฉันไม่ทราบเลยในไลบรารีมาตรฐานดังนั้นคู่อินพุตจะแสดงเป็นรายการ Function<Stream<List<String>>, Function<String, String>>สามารถกำหนดให้

l->s->l.filter(p->p.contains(s)).map(p->p.get(1-p.indexOf(s))).findAny().get()

ลองใช้ออนไลน์

ฉันจะให้เครดิตการประหยัด 6 ไบต์สุดท้ายให้กับทุกคนที่สามารถโน้มน้าวฉันว่าการส่งคืนOptionalนั้นถูกต้อง ฉันไม่สามารถโน้มน้าวตัวเองได้

หนึ่งในส่วนที่น่าสนใจของโซลูชันนี้สำหรับฉันคือการกำหนดวิธีที่ถูกที่สุดเพื่อให้ได้ผลลัพธ์จากสตรีม ผมถือว่าreduce, findFirstและmin/ แต่ไม่มีผู้ใดก็สั้นกว่าที่ใช้งานง่ายmaxfindAny



1

JavaScript (ES6), 45 ไบต์

เมื่อคืนนี้มาแล้วสังเกตเห็นว่านีลได้เอาชนะฉันในการแก้ปัญหา JS ที่ดีกว่า คิดว่าฉันอาจโพสต์ได้เช่นกัน

ทำงานร่วมกับสตริงและจำนวนเต็ม

a=>n=>a.reduce((x,y)=>y[1-y.indexOf(n)]||x,0)


1

C # (.NET แกน) , 101 100 + 18 ไบต์

ขอบคุณ Grzegorz Puławskiที่ช่วยลดจำนวนไบต์สักสองสาม

x=>y=>x.Where(z=>z.Item1==y).FirstOrDefault()?.Item2??x.Where(z=>z.Item2==y).FirstOrDefault()?.Item1

ลองออนไลน์!

C # (. NET Core), 122 121 120 ไบต์

x=>y=>{for(int i=0;i<x.Length;i++){if(x[i].Item1==y){return x[i].Item2;}if(x[i].Item2==y){return x[i].Item1;}}return"";}

ลองออนไลน์!


x=>y=>สั้นกว่า(x,y)=>( Func<a, b, c>กลายเป็นFunc<a, Func<b, c>>และการเรียกใช้ฟังก์ชั่นf(a, b)จะกลายเป็นf(a)(b)) - คำตอบ btw ยอดเยี่ยม!
Grzegorz Puławski

สำหรับคำตอบแรกฟังก์ชั่นตัวเองไม่ได้ใช้อะไรนอกจาก System.Linq ดังนั้นคุณสามารถเพิ่ม 18 ไบต์เท่านั้นที่จะตอบ ( using System.Linq;เทียบกับnamespace System.Linq{})
Grzegorz Puławski

@ GrzegorzPuławskiขอบคุณสำหรับความช่วยเหลือและคำชมฉันหวังว่าฉันจะแก้ไขคำตอบได้ถึงกลิ่น
Dennis.Verweij

1

Huskขนาด 10 ไบต์

→ḟo=⁰←S+m↔

ลองออนไลน์!

Ungolfed / คำอธิบาย

            -- example input:                         4 [(1,2),(3,4)]
      S+    -- concatenate list with                -
        m↔  --   itself but all pairs flipped       -   [(1,2),(3,4),(2,1),(4,3)]
 ḟo         -- find first occurence where           -
   =⁰←      --   the left element is equal to input -   (4,3)
→           -- get the right element                -   3

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


1

Swift 4 , 43 bytes

{a,m in a.flatMap{$0==m ?$1:$1==m ?$0:nil}}

เอาต์พุตเป็นอาร์เรย์ซึ่งว่างเปล่า (ไม่พบคู่) หรือมีองค์ประกอบเดียว (คู่ค้า)

กรณีทดสอบ:

let testcases: [(pairs: [(String, String)], match: String, expected: String)] = [
    (
        pairs: [("(", ")"), ("{", "}"), ("[", "]")],
        match: "}", expected: "{"
    ),
    (
        pairs: [("I'm", "So"), ("Meta", "Even"), ("This", "Acronym")],
        match: "Even", expected: "Meta"
    ),
    (
        pairs: [("I", "S"), ("M", "E"), ("T", "A")],
        match: "A", expected: "T"
    ),
    (
        pairs: [("test", "cases"), ("are", "fun")],
        match: "test", expected: "cases"
    ),
    (
        pairs: [("sad", "beep"), ("boop", "boop")],
        match: "boop", expected: "boop"
    ),
]

for (caseNumber, testcase) in testcases.enumerated() {
    let actual = f(testcase.pairs, testcase.match).first

    assert(actual == testcase.expected,
        "Testcase #\(caseNumber) \((testcase.pairs, testcase.match)) failed. Got \(String(reflecting: actual)), but expected \(testcase.expected)!")
    print("Testcase #\(caseNumber) passed!")
}

1

QBICขนาด 30 ไบต์

{_?~A=G|_X]_?~A=;|Z=B]~B=C|Z=A

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

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

Command line: Even
I'm
So
Meta
Even
This
Acronym

Meta

คำอธิบาย

{           DO infinitely
_?          Ask for part 1 of tuple, A$
~A=G|  ]    IF A$ is empty (equal to G$, which is undefined and therefore "") THEN
     _X         Quit
_?          Ask for part 2 of tuple, B$
~A=;|       IF part 1 of the tuple equals teh cmd line param (loaded in as C$) THEN
    Z=B]        set Z$ to part 2 of the tuple (Z$ gets printed when QBIC quits)
~B=C|Z=A    IF part 2 of the tuple matches input, set Z$ to part 1
            The final IF and the DO loop are closed implicitly

รุ่นทางเลือก 22 ไบต์

{_?_?~A=;|_XB]~B=C|_XA

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


0

Mathematica, 50 ไบต์

(t={#2};Select[Complement[#,t]&/@#,Length@#==1&])&

ลองออนไลน์!


สิ่งนี้ใช้ไม่ได้กับ{'boop','boop'}testcase
Sanchises

@Sanchises "boop" ไม่ได้อยู่ที่นั่นเมื่อฉันตอบและคำถามไม่เกี่ยวกับ [a, a] tuples ฉันเชื่อว่าคำตอบก่อนที่จะแก้ไข boop ใช้ได้
J42161217

ฉันไม่ทราบนโยบายเกี่ยวกับการชี้แจงคำตอบที่มีอยู่ของ OP ว่าใช้การไม่ได้ มันเป็นเพียงแค่หัวขึ้นเกี่ยวกับการแก้ไข
Sanchises

0

ซ้อนกัน 21 ไบต์

[:$revmap,KeyArray\#]

ลองออนไลน์! ซึ่งรับอินพุตจากสแต็กและปล่อยเอาต์พุตบนสแต็ก ขยายแล้วดูเหมือนว่า:

[ : $rev map , KeyArray \ # ]

คำอธิบาย

ลองทำ(('sad' 'beep') ('boop' 'boop'))และ'boop'เป็นอินพุท จากนั้นอาร์เรย์เช่นนั้นถูกสร้างขึ้นโดย:$revmap, :

(( 'sad' 'beep')
 ('boop' 'boop')
 ('beep'  'sad')
 ('boop' 'boop'))

นั่นคือสำเนาของอาเรย์คือแผนที่สมาชิกแต่ละคนจะถูกย้อนกลับและทั้งสองจะถูกรวมเข้าด้วยกัน KeyArrayในทางกลับกันทำให้แฮชออกมาจากค่าที่ได้รับเช่น:

KeyArray [ sad => beep, boop => boop, beep => sad, boop => boop ]

จากนั้น\นำสตริงการค้นหาไปที่ด้านบนสุดของสแต็กและรับคีย์จาก KeyArray ที่ตรงกับ#ที่ตรงกับ ส่งคืนค่าเดียวเท่านั้นดังนั้นคีย์ที่ซ้ำกันใน KeyArray ไม่จำเป็นต้องกังวล

แนวทางอื่น ๆ

32 ไบต์: (อินพุตจากสแต็กเอาต์พุตไปยัง STDOUT) [@x:$revmap,uniq[...x=$out*]map]

36 ไบต์: {%x[y index#+]YES 0# :y neq keep 0#}

38 ไบต์: [@x:$revmap#,[KeyArray x#]map:keep 0#]

46 ไบต์: [@x:KeyArray\$revmap KeyArray,[x#]map:keep 0#]


0

Excel, 18 ไบต์

ไม่ประสงค์ออกนามสมุดงาน Excel สูตรที่จะเข้าเป็น<Lookup Value>ระยะA1, <Key Array>ระยะB:Bและ<Def Array>จากช่วงC:Cและผลลัพธ์ค่าความหมายที่เกี่ยวข้องกับการค้นหาค่าไปยังมือถือโทร

=VLOOKUP(A1,B:C,2)

ตัวอย่าง I / O จะถูกรวมเมื่อเป็นไปได้

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