ง่ายเหมือน ABC


28

อินพุต

สตริงที่มีมากที่สุดคนหนึ่งของแต่ละตัวอักษรA, และB Cพวกเขาอาจอยู่ในลำดับใด ๆ สตริงว่างคืออินพุตที่ถูกต้อง

หมายเหตุ:รุ่นก่อนหน้าของความท้าทายนี้ใช้ตัวอักษรLEJแทนABCและพวกเขาอาจยังคงใช้ถ้าต้องการ

เอาท์พุต

สตริงของA, B, Cตัวอักษรที่ไม่ได้อยู่ในการป้อนข้อมูล พวกเขาอาจอยู่ในลำดับใด ๆ

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

ตัวอย่าง

  • หากอินพุตเป็นBผลลัพธ์ก็ควรจะเป็นCAหรือACตั้งแต่AและCไม่อยู่ในอินพุต
  • หากอินพุตเป็นสตริงว่างเปล่าเอาต์พุตควรเป็นABCหรือการเรียงลำดับใด ๆ เนื่องจากไม่มีทั้งสามตัวอักษรในอินพุต
  • หากอินพุตเป็นCABผลลัพธ์เอาต์พุตควรเป็นสตริงว่างเนื่องจากทั้งสามตัวอักษรมีอยู่ในอินพุต

กรณีทดสอบ

มีกรณีที่ป้อนเข้าน้อยมากที่เราสามารถระบุได้ทั้งหมด:

in -> out1 | out2 | out3 | ...
ABC -> ""
ACB -> ""
BCA -> ""
BAC -> ""
CAB -> ""
CBA -> ""
AB -> C
AC -> B
BC -> A
BA -> C
CA -> B
CB -> A
A -> BC | CB
B -> CA | AC
C -> AB | BA
"" -> ABC | ACB | BCA | BAC | CAB | CBA

เอาต์พุตที่ถูกต้องทั้งหมดสำหรับแต่ละอินพุตจะถูกกำหนดโดยคั่นด้วย|'s ""แทนสตริงว่าง

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

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ แต่โปรดจำไว้ว่าคุณอาจได้รับการยอมรับมากขึ้นสำหรับการแก้ปัญหาด้วยวิธีที่เป็นเอกลักษณ์มากกว่าในระยะสั้น)



1
งานถูกตั้งค่าความแตกต่างระหว่างค่าคงที่และอินพุต การขอให้ทุกสิ่งที่ทำในสายนั้นยุ่งยากเกี่ยวกับความยากลำบากของงานจริง
Mego

2
ฉันจำการจับคู่ล่อแหลมที่ตรงกว่าที่คุณต้องลบอินพุตจากชุดค่าคงที่
xnor

1
อินพุตสามารถมีตัวอักษรนอก "ABC" ได้หรือไม่? ข้อมูลจำเพาะ: "สตริงที่มีอย่างน้อยหนึ่งตัวอักษร A, B และ C" จะไม่รวมอินพุตดังกล่าว
theonlygusti

1
@theonlygusti ข้อมูลที่ป้อนควรมี ABC
งานอดิเรกของ Calvin

คำตอบ:


20

Python 3, 29 27 22 ไบต์

lambda x:{*"ABC"}-{*x}

-2 ไบต์ขอบคุณ Jonathan Allan

-5 ไบต์ขอบคุณ Rod


print(*{*"LEJ"}-{*input()})ประหยัด 2. (ทดสอบกับ 3.5 และ 3.6)
Jonathan Allan


14
ฉันรักหลาม❤️
theonlygusti

@theonlygusti เกิดอะไรขึ้นกับ <3 และ♥?
wizzwizz4

@theonlygusti: ฉันจะรักหลามถ้าฉันสามารถแทนที่ lamda ด้วย𝛌
Fahim Parkar

10

เยลลี่ขนาด 4 ไบต์

ขอบคุณ @DuctrTape สำหรับผลิตภัณฑ์ที่เกี่ยวกับการเปลี่ยนแปลงและการมี "ABC" ในพจนานุกรมของ Jelly

“ḃ»ḟ

ลองออนไลน์!

“ḃ»เงยหน้าขึ้นมองรายการ "ABC" ในพจนานุกรมของ Jelly เป็นตัวกรองที่ทิ้งตัวอักขระซึ่งจะลบอักขระที่พบในอินพุตจากรายการของตัวละครนั้น ผลลัพธ์ถูกพิมพ์โดยปริยาย


สำหรับเวอร์ชันตัวพิมพ์เล็กรายการพจนานุกรมที่จะใช้อาจเป็น "abac" ( “c») หรือ "abaca" ( “i»)


เมื่อความท้าทายคือ "LEJ" สามารถทำได้เพียง6ไบต์ในตัวแปรตัวพิมพ์ใหญ่เนื่องจากไม่มีรายการพจนานุกรมที่มีชุดอักขระนั้นทำให้เราสร้างรายการอักขระ“LEJ”(หรือการเปลี่ยนแปลง)

ตัวแปรตัวพิมพ์เล็กนั้นดีกว่าที่5ไบต์เนื่องจากมีคำว่า "jell" ( “ẎṄ»)


1
ฉันชอบวิธีที่โค้ดส่วนใหญ่สร้างสตริง "ABC" และตัวโปรแกรมที่แท้จริงคือตัวละครตัวเดียว คลาสสิกเยลลี่
sagiksp

6

Bash + coreutils ขนาด 15 ไบต์

tr -d x$1<<<LEJ

ลองออนไลน์!

ฉันต้องการละเว้นxแต่tr -dจะไม่มีอาร์กิวเมนต์เมื่อสตริงอินพุตว่างเปล่า (การxไม่ทำอันตรายใด ๆ เนื่องจากไม่มี x ในสตริงที่นี่ LEJ.) ปกติแล้วฉันจะเขียนtr -d "$1"แต่ทำอย่างที่ฉันทำก็คือหนึ่งไบต์สั้นกว่านั้น


ฉันมีความคิดเดียวกัน - แม้จะมีคำพูด - ทันทีเช่นกัน
rexkogitans

6

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

จำนวนไบต์ถือว่าการเข้ารหัส ISO 8859-1

$
¶ABC
D`.
A1`

ลองออนไลน์!

คำอธิบาย

$
¶ABC

ABCผนวกบรรทัดที่สองที่มี

D`.

คัดลอกอักขระอีกครั้ง จะเป็นการลบอักขระทุกตัวจากบรรทัดที่สองซึ่งปรากฏอยู่ในบรรทัดแรกแล้ว

A1`

ยกเลิกบรรทัดแรก


วิธีการว่าจะเป็น1`ส่วนหนึ่งของขั้นตอนการทำงาน antigrep?
Kritixi Lithos

@KritixiLithos Numbers ในสตริงการกำหนดค่าเป็นข้อ จำกัด 1โดยทั่วไปหมายถึง "ทำ X เพียงครั้งเดียว" การ จำกัด การทำงาน (เช่น X คืออะไร) ขึ้นอยู่กับประเภทของเวทีที่คุณใช้ สำหรับขั้นตอน antigrep Retina จะตรวจสอบว่าบรรทัดใดที่ตรงกับ regex (ที่นี่ทุกบรรทัดเนื่องจาก regex ว่างเปล่า) แต่จากนั้นขีด จำกัด หมายถึง "ทิ้งเฉพาะบรรทัดแรกที่ตรงกัน" ในทำนองเดียวกันถ้ามันเป็นระยะ grep มันจะหมายถึง "เพียงรักษาบรรทัดแรกที่ตรงกัน" ความหมายของข้อ จำกัด ทั้งหมดมีการระบุไว้ในวิกิพีเดีย
Martin Ender

6

05AB1E , 6 4 ไบต์

บันทึก 2 ไบต์โดยใช้žRคำสั่งใหม่ตามที่Kevin Cruijssen แนะนำ

žRsм

ลองออนไลน์! หรือเป็นชุดทดสอบ

คำอธิบาย

   м  # remove the character of
  s   # the input
žR    # from the string "ABC"

ควรป้อนข้อมูลของการJส่งคืนเท่านั้นEL, LEหรือไม่
Magic Octopus Urn

2
ดี! เช่นเดียวกับ FYI อินพุตสามารถแสดงเป็น"""{input}"""ซึ่งใช้งานได้กับสตริงว่าง :)
Adnan

@carusocomputing: มันสามารถส่งคืนได้ (ในกรณีนี้มันจะส่งคืนLE)
Emigna


1
@Emigna Tbh ไม่ ฉันคิดว่ามันถูกเพิ่มเข้ามาเนื่องจากความท้าทายนี้บางที แต่โดยส่วนตัวฉันไม่เคยใช้มาก่อน
Kevin Cruijssen

5

Java 7, 73 58 ไบต์

String c(String s){return"EJL".replaceAll("[ "+s+"]","");}

บันทึก 15 ไบต์ด้วยขอบคุณ @KritixiLithos

รหัสทดสอบ:

ลองที่นี่

class M{
  static String c(String s){return"EJL".replaceAll("[ "+s+"]","");}

  public static void main(final String[] a) {
    System.out.print("LEJ=" + c("LEJ") + "; ");
    System.out.print("LJE=" + c("LJE") + "; ");
    System.out.print("EJL=" + c("EJL") + "; ");
    System.out.print("ELJ=" + c("ELJ") + "; ");
    System.out.print("JLE=" + c("JLE") + "; ");
    System.out.print("JEL=" + c("JEL") + "; ");
    System.out.print("LE=" + c("LE") + "; ");
    System.out.print("LJ=" + c("LJ") + "; ");
    System.out.print("EJ=" + c("EJ") + "; ");
    System.out.print("EL=" + c("EL") + "; ");
    System.out.print("JL=" + c("JL") + "; ");
    System.out.print("JE=" + c("JE") + "; ");
    System.out.print("L=" + c("L") + "; ");
    System.out.print("E=" + c("E") + "; ");
    System.out.print("J=" + c("J") + "; ");
    System.out.print("\"\"=" + c(""));
  }
}

เอาท์พุท:

LEJ=; LJE=; EJL=; ELJ=; JLE=; JEL=; LE=J; LJ=E; EJ=L; EL=J; JL=E; JE=L; L=EJ; E=JL; J=EL; ""=EJL

1
คุณสามารถทำ"["+s+"]"แทนs.replaceAll("(.)","$1|")?
Kritixi Lithos

@KritixiLithos Smart มันล้มเหลวสำหรับสตริงที่ว่างเปล่า แต่ด้วยการเพิ่มช่องว่าง (หรืออักขระอื่น ๆ ที่ไม่ใช่EJL) มันทำงานได้อีกครั้งซึ่งยังคงสั้นกว่ามาก :)
Kevin Cruijssen



4

MATL, 10 8 ไบต์

บันทึกสองไบต์ด้วย Suever จะสั้นกว่าsetdiffismember

'ABC'iX-

ลองที่นี่!

คำอธิบาย

'ABC'      % Create a string literal
     i     % User input
      X-   % Set difference, between two elements of the stack 

ใช่นี่อาจเป็นงานที่ไม่สำคัญ แต่ฉันก็ค่อนข้างพอใจที่ฉันสามารถแก้ไขมันด้วย MATL ได้ด้วยตัวเอง ฉันไม่เคยบอกว่ามันเป็นวิธีแก้ปัญหาที่สั้นที่สุด ... ขอบคุณ Suever!


4

JavaScript ES6, 41 39 38 ไบต์

s=>eval(`'ABC'.replace(/[${s}]/g,'')`)

บันทึก 2 ไบต์ขอบคุณ Arnauld บันทึก 1 ไบต์ขอบคุณ LarsW

f=s=>eval(`'ABC'.replace(/[${s}]/g,'')`)

console.log(f("AB"));


ฉันบนมือถือดังนั้นฉันไม่สามารถทดสอบโค้ดของฉัน แต่นี้ควรจะทำงานผมคิดว่า:s=>eval`'ABC'.replace(/[${s}]/g,'')`
LarsW

เยี่ยมมาก! ความสามารถในการพูดช่วยให้คุณประหยัดมากกว่าตัวละครทั้งสองวิธีการแก้ปัญหาที่ผมได้มาด้วย:.join`` f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
nnnnnn

1
@ LarsW ดูเหมือนรหัสที่แน่นอนไม่ทำงาน แต่การเพิ่มวงเล็บรอบ ๆ แม่แบบสตริงได้และบันทึกหนึ่งไบต์ ขอบคุณ!
ทอม

3

V , 10 ไบต์

CLEJ<ESC>Ó[<C-r>"]

ลองออนไลน์!

hexdump:

00000000: 434c 454a 1bd3 5b12 225d                 CLEJ..[."]

คำอธิบาย

อินพุตอยู่บนบรรทัดแรกของบัฟเฟอร์ ดังนั้นสิ่งที่ชอบ:

EL

และเคอร์เซอร์อยู่ที่ตัวอักษรตัวแรก ดังนั้นเราจึงลบอินพุต (ซึ่งเก็บไว้ในการลงทะเบียน") และเข้าสู่โหมดแทรกพร้อมกันโดยใช้Cและเข้าสู่โหมดแทรกพร้อมกันโดยใช้

เมื่ออยู่ในโหมดแทรกตัวละครLEJจะถูกแทรกหลังจากนั้นฉันกลับสู่โหมดปกติโดยใช้<ESC>จะถูกแทรกหลังจากที่ผมกลับสู่โหมดปกติใช้

ตอนนี้เราต้องลบตัวละครทั้งหมดที่มีอยู่ในอินพุต

Ó                       " remove every
 [<C-r>"]               "  character that appears in the input
                        " synonym of Vim's :s/[<C-r>"]//g

และเมื่อสิ่งนี้เกิดขึ้นเราก็เหลือตัวอักษรที่เหลืออยู่ในบัฟเฟอร์



3

Haskell , 27 26 ไบต์

import Data.List
("ABC"\\)

ลองออนไลน์!การใช้งาน: อัตราผลตอบแทน("ABC"\\) "CB""A"

\\ เป็นตัวดำเนินการความแตกต่างที่กำหนดไว้ในวงเล็บจะเรียกว่า ส่วนที่เป็นรูปแบบสั้นสำหรับ (\x -> "ABC" \\ x)Lamda


โดยไม่ต้องนำเข้า: (นับไบต์เดียวกันด้วย @nimi)

f x=[c|c<-"ABC",all(/=c)x]

ลองออนไลน์!การใช้งาน: อัตราผลตอบแทนf "CB""A"


แนวทางอื่น ๆ :

f x=filter(`notElem`x)"ABC"
(`filter`"ABC").flip notElem
f x=[c|c<-"ABC",notElem c x]

1
ฉันหวังว่า(\\)จะถูกย้ายไปที่โหมโรงเร็ว ๆ นี้
theonlygusti

@ theonlygusti ฉันหวังว่ามันจะไม่; นี่ไม่ใช่การดำเนินการที่สมเหตุสมผลสำหรับรายการ (อย่างน้อยไม่เว้นแต่คุณจะระบุอย่างชัดเจนว่าคุณต้องการ list-as-set) Data.Set.differenceการดำเนินการเริ่มต้นสำหรับงานที่ควรจะเป็น
หยุดที่จะเปลี่ยนรหัสล็อคซึ่งเป็น

@ceasedtoturncounterclock ทำไมมันไม่สมเหตุสมผล? นอกจากนี้เหตุผลเดียวที่ฉันต้องการให้ย้ายคือเพราะมันมีประโยชน์บ่อยครั้ง
theonlygusti

1
@Theonlygusti มันไม่สมเหตุสมผลในแง่ที่ว่าถ้าคุณพบว่าตัวเองกำลังใช้มันเป็นสัญญาณว่าคุณอาจใช้โครงสร้างข้อมูลที่ไม่ถูกต้อง รายการสามารถมีองค์ประกอบที่ซ้ำกันคำสั่งซื้อและพวกเขาอาจถูกสร้างขึ้นอย่างเกียจคร้าน (แม้ไม่มีที่สิ้นสุด) (\\)ไม่เคารพสิ่งนี้ ชนิดข้อมูลที่มีไว้สำหรับลักษณะการทำงานนี้มีโครงสร้างที่ทำให้พวกเขาโดยทั่วไปค่อนข้างมีประสิทธิภาพปลอดภัยกว่า (เพราะไม่มีความเสถียรที่เป็นไปได้ ฯลฯ สมมติฐานสามารถแตกสลาย) และเปิดเผยอินเทอร์เฟซที่สะดวกสบายมากขึ้น
หยุดหมุนทวนเข็มนาฬิกาเมื่อ

@asetoturncounterclock เป็นอะไรใช่ "ตัวอย่างแรกของ ... " แต่ nvm
theonlygusti

3

รุ่น GNU , 34 29 ไบต์

รวม +1 สำหรับ -r

-5 ขอบคุณDigital Trauma

s/^/ABC/
:
s/(.)(.*)\1/\2/
t

ลองออนไลน์!

ด้วยเหตุผลบางอย่าง TIO ไม่สามารถทำงานได้กับ Extended Regex ( -r) ดังนั้นฉันจึงต้องใส่มันใน BASH


s/^/ABC/        # put ABC at the beginning of the string
:               # nameless label
s/(.)(.*)\1/\2/ # remove a duplicate letter
t               # branch to the nameless label if something changed

ขึ้นบรรทัดใหม่-nและPไม่จำเป็น นอกจากนี้คุณยังสามารถสรุปได้ด้วยการทุบตีเพื่อให้มันทำงานใน TIO ไม่รู้ว่าทำไม-rมันไม่ทำงาน tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…
บาดเจ็บทางดิจิตอล

@ DigitalTrauma ขอบคุณ! ฉันคิดว่าจะมีตัวละครนอกเหนือจาก A, B และ C เมื่อฉันเขียนสิ่งนี้
Riley

3

Brain-Flak , 120 + 3 = 123 ไบต์

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

มันทำงานด้วย -cตั้งค่าสถานะเพิ่ม 3 ไบต์

ลองออนไลน์!

คำอธิบาย

โดยรวมแล้วโปรแกรมนี้ค่อนข้างจะตั้งค่าสแต็กขวาลบกับสแต็กด้านซ้ายด้วยสแต็กขวาที่เริ่มต้นได้ CBAและสแต็กด้านซ้ายเริ่มต้นกับอินพุต

รหัสข้อเขียน

<>((((((((()()){}){}){}){}){}())())())<> # Switch to right stack, push CBA, switch back
{({}(<()>)){(([({})]<>({}))){(<({}<>{})<>([{}]{}<>)>)}{}}{}{}<>{}{({}<>)<>}{}}<>

คำอธิบายเพิ่มเติมที่จะมา ...


2

Mathematica ขนาด 37 ไบต์

Complement@@Characters@{"ABC",#}<>""&

มีเหตุผลที่คุณใช้สตริงที่นี่มากกว่ารายชื่อตัวละคร?
Greg Martin

@GregMartin นิสัยฉันเดา
มาร์ตินเอนเดอร์

เพียงแค่ฉันคิดว่ามันสั้นกว่านี้ถ้าคุณสามารถหลีกเลี่ยงได้Characters
Greg Martin

2

แครอท 15 ไบต์ไม่ใช่การแข่งขัน

ไม่ใช่การแข่งขันเนื่องจากข้อผิดพลาดฉันพบว่ามีการส่งคืนการแข่งขันและสตริงว่างเปล่า ดังนั้นฉันแค่แก้ไขมัน

ABC^//[^#]/gS""

ลองออนไลน์! (คัดลอกวาง)

คำอธิบาย

ABC^                   //sets stack (just a string, not an array) to "ABC"
    /                  //return match(es) of:
     /[^#]/g           // `#` is the placeholder for the input
                       // so effectively, this returns the matches of any character not present in the input
                       // applied on the stack
                       //this returns an array of all the matches of the regex
            S""        //join all the elements of the array using "", the empty string



2

อ็อกเทฟ, 29ไบต์

บันทึกสองไบต์ด้วย Suever โดยการสร้างสตริง'ABC'ภายในการismemberโทร

@(s)x(~ismember(x='ABC',s))

เราใช้ดัชนีเป็นตรรกะที่จะตัวแปร~ismember() xสิ่งที่แปลกประหลาดคือเราสร้างx='ABC' ข้างใน ismemberไม่ใช่ด้านหน้า คำสั่งระดับแปดเสียงเห็นสิ่งนี้:

@(s)                        % Anonymous function that takes a string s as input
                x='ABC'     % Create a variable x with the characters 'ABC'
       ismember(x='ABC',s)  % True for elements that are in both x and s. False otherwise.
      ~ismember(x='ABC',s)  % Negate this, so that we keep the characters that aren't in s
@(s)x(~ismember(x='ABC',s)) % Use the logical vector as indices to x and return the result

2

C #, 50 Bytes 32 Bytes 47 Bytes 35 Bytes

iอินพุตอยู่ที่ไหน:

i=>string.Join("","ABC".Except(i));

แอปเต็มรูปแบบทดสอบใน LINQPad

void Main()
{
    var testcases = new Dictionary<string,string[]>
    {
        ["ABC"] = new[]{""},
        ["ACB"] = new[]{""},
        ["BCA"]  = new[]{""},
        ["BAC"]  = new[]{""},
        ["CAB"]  = new[]{""},
        ["CBA"]  = new[]{""},
        ["AB"] = new[]{"C"},
        ["AC"] = new[]{"B"},
        ["BC"] = new[]{"A"},
        ["BA"] = new[]{"C"},
        ["CA"] = new[]{"B"},
        ["CB"] = new[]{"A"},
        ["A"] = new[]{"BC","CB"},
        ["B"] = new[]{"CA","AC"},
        ["C"] = new[]{"AB","BA"},
        [""] = new[]{"ABC","ACB","BCA","BAC","CAB","CBA"},
    };

    var output = "";

    foreach(var input in testcases.Keys)
    {
        var expect = testcases[input];
        var actual = GetResult(input);
        if(!expect.Contains(actual)) throw new ApplicationException($"{input}:{string.Join(",",expect)}:{actual}");
        output+=$"{input} -> {actual}\n";
    }
    output.Dump();
}

// Define other methods and classes here
private string GetResult(string input){
    return string.Join("","ABC".Except(i));
}

ผลการทดสอบ

เอบีซี ->
ACB ->
BCA ->
บัค ->
CAB ->
CBA ->
AB -> C
AC -> B
BC -> เอ
BA -> C
CA -> B
CB -> เอ
เอ -> BC
B -> AC
C -> AB
-> ABC


1
นั่นไม่ใช่คำตอบที่ถูกต้องมันจะต้องมีฟังก์ชั่นหรือโปรแกรมไม่ใช่ตัวอย่างของรหัส
theonlygusti

อา ความผิดฉันเอง. จับเวลาครั้งแรกที่นี่ ดังนั้นฉันต้องการส่วนการพิมพ์อยู่หรือไม่
Michael Coxon

@MichaelCoxon: คุณต้องทำการเข้าสู่โปรแกรมทั้งหมดซึ่งคอมไพล์ (ไม่แนะนำใน C # มันมีจำนวนมากสำเร็จรูป) หรือเข้าไปในฟังก์ชั่นที่สามารถเรียกได้หลายครั้ง; ในขณะนี้มันเป็นเพียงคำสั่ง ใน C # มันเป็นวิธีที่ง่ายที่สุดในการทำให้มันเป็นฟังก์ชั่นโดยการสร้างแลมบ์ดาที่รับอินพุตผ่านการขัดแย้งและส่งคืนโดยใช้ค่าส่งคืน

string.Join("",...)-> string.Concat(...)บันทึก 1 ไบต์
ศูนย์รวมแห่งความไม่รู้

1

APL, 7 ไบต์

'ABC'∘~

~เป็นการตั้งค่าการลบคือเขียนดังนั้นนี่คือฟังก์ชั่นที่ส่งกลับABCลบอักขระในอินพุตของมัน



1

Perl 5.9.9 79 38 37 35 ไบต์

perl -le '$_="ABC";eval"y/$ARGV[0]//d";print'

(ไม่แน่ใจเกี่ยวกับกฎการนับที่นี่ - รวมสวิตช์ไว้แล้ว แต่ไม่ใช่คำสั่ง perl)

> perl -le '$_="ABC";eval"y/$ARGV[0]//d";print' AB
C
> perl -le '$_="ABC";eval"y/$ARGV[0]//d";print'
ABC

(จำนวนที่ปรับหลังจากการตัดสินความคิดเห็นด้านล่าง)


จะใช้งานได้กับอินพุตว่างหรือไม่
ติตัส

ตอนนี้ฉันแก้ไขข้อผิดพลาดการถอดความ (มี ".. " พิมพ์ {,,} ที่นี่ ... )
Tom Tanner

รหัสของคุณยาว 35 ไบต์ (34 +1 สำหรับการ-lตั้งค่าสถานะ) :)
Paul Picard

ขอบคุณ -l ใช้สำหรับการ prettification (เช่นเดียวกับขึ้นบรรทัดใหม่ในตอนท้ายของเอาต์พุต) ไม่แน่ใจว่าสิ่งนั้นจำเป็นจากกฎการแข่งขันหรือไม่
Tom Tanner

ด้วย 5.14+คุณสามารถทำได้perl -pe'$_=eval"ABC=~y/$_//dr"'เพียง 23 ไบต์ (22 + 1 สำหรับ-p)
ThisSuitIsBlackNot

1

เสียงกระเพื่อมสามัญ, 71 ไบต์

รายการที่ใหญ่ที่สุดในขณะนี้ แต่อย่างน้อยก็สามารถอ่านได้ ;-)

(lambda(s)(coerce(set-difference'(#\A #\B #\C)(coerce s'list))'string))



1

C, 53 ไบต์

b=64;c(char*a){while(b<67)putchar(++b*!strchr(a,b));}

หากไม่อนุญาตให้มีการประกาศโดยนัยของ string.h จะต้องเพิ่ม72 ไบต์#include<string.h>

ลองออนไลน์!


หรือความสนุกเพิ่มขึ้นอีก75 ไบต์

a[128]={};b=64;c(char*d){while(*d)++a[*d++];while(b<67)putchar(b*!a[++b]);}

ลองออนไลน์!



1

แบตช์ 101 ไบต์

@set/ps=
@for %%c in (L E J)do @call set d=%%s:%%c=%%&call:c %%c
:c
@if "%d%"=="%s%" set/pd=%1<nul

รับอินพุตบน STDIN ซึ่งหมายความว่า%1ว่างเปล่าเมื่อโค้ดตกอยู่ในรูทีนย่อยตัวช่วยและไม่มีสิ่งใดพิมพ์ออกมา


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