อินพุต∩ซอร์สโค้ด


70

Intro

ความท้าทายคือการสร้างโปรแกรม / ฟังก์ชั่นที่พิมพ์จุดตัดของซอร์สโค้ดของตัวเองและอินพุตสตริงที่กำหนด นี่คือรหัสกอล์ฟและแม่นยำยิ่งขึ้น:

  • อนุญาตIเป็นชุดอินพุต
    • {"a","b","c"}
  • อนุญาตSเป็นชุดซอร์สโค้ด
    • {"b","f"}
  • จากนั้นทางแยกก็เป็นสิ่งที่พวกเขาแบ่งปัน
    • I ∩ S = {"b"}

อินพุต

อินพุตมีความยืดหยุ่น มันควรจะสามารถจัดการการเข้ารหัสอักขระที่ใช้สำหรับซอร์สโค้ด

เอาท์พุต

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

  • ผลผลิตมีความยืดหยุ่น:
    • อาจเป็นโครงสร้างข้อมูลใด ๆ (สตริงหรืออื่น ๆ )
    • ไม่สามารถจัดลำดับ
    • อาจมีส่วนท้าย \n
    • ควรมีความชัดเจน

การ จำกัด

คล้ายกับท้าทายโปรแกรม / ฟังก์ชั่นอาจไม่ได้อ่านรหัสแหล่งที่มาและ 0 ไบต์การแก้ปัญหาของตัวเองไม่ได้รับอนุญาต

ตัวอย่าง

  • # 1
functor x(I){ return I ∩ self; }

Inputs                                Outputs
------                                -------
enter preformatted text here      ->  {"e","n","t","r","f","o","x"}

["Albrt"," Einstin"]              ->  {"l","r","t","n","s"}
  • # 2
(_)->_&"(_)->&\"\\"

Inputs                                Outputs
------                                -------
"Security at the expense of       ->  "
usability comes at the expense 
of security."

(0____0)                          ->  (_)
  • # 3
ಠa益длф


Inputs                                Outputs
------                                -------
Far out in the uncharted backwaters ->"a"    
of the unfashionable end of the 
Western Spiral arm of the Galaxy lies 
a small unregarded yellow sun. 
Orbiting this at a distance of roughly 
ninety-eight million miles is an 
utterly insignificant little blue-green 
planet whose ape-descended life forms 
are so amazingly primitive that they 
still think digital watches are a pretty 
neat idea.

(ノಠ益ಠ)ノ彡┻━┻                      ->"ಠ益"

กรณีทดสอบ

Albert Einstein

\__( O__O)_/

!@#$%^&*()_+{}|:"<>?

1234567890-=[]\;',./

(ノಠ益ಠ)ノ彡┻━┻

“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”

┬──┬ ノ( ゜-゜ノ)

Far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-eight million miles is an utterly insignificant little blue-green planet whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.

ปรับปรุง

  • [16-08-10]: เซตเป็นกลุ่มของวัตถุที่แตกต่างกัน
  • [16-08-10]: ขึ้นบรรทัดใหม่เป็นที่ยอมรับ

2
เอาท์พุทอาจมีตัวละครที่ซ้ำกัน?
บาดเจ็บทางดิจิทัล

1
@DigitalTrauma จากตัวอย่าง # 1, # 2 และ # 3 ไม่ปรากฏขึ้น
Luis Mendo

@DigitalTrauma ขออภัยสำหรับความกำกวม, ชุด (ในแง่คณิตศาสตร์) ละเว้นคำสั่งและไม่มีการทำซ้ำ
NonlinearFruit

22
ขอแสดงความยินดีที่มาพร้อมกับควินินทั่วไปที่การแก้ปัญหาที่ดีที่สุดไม่ได้ขึ้นอยู่กับมาตรฐานมาตรฐานของภาษา :)
Martin Ender

1
หากชุดไม่ควรมีการทำซ้ำชุดอินพุตไม่ควรมีการทำซ้ำหรือไม่ หรืออินพุทไม่ใช่ชุดจริง?
user81655

คำตอบ:



15

Python 3, 44 ไบต์

ขอบคุณ Karl สำหรับการช่วยฉันหนึ่งไบต์ :-) ขอบคุณ Dada ที่ช่วยฉันสองไบต์!

ฉันคิดว่ามันใช้งานได้ แต่มันเป็นความท้าทายครั้งแรกของฉันดังนั้นฉันจึงไม่แน่ใจ 100% : \

print(set("printseu()&'"+'+"')&set(input()))

รุ่นแลมบ์ดาที่มี 43 ไบต์: lambda a:set(" lambdaset()&'"+':+"')&set(a)


8
'eroticpuns\()&\''สั้นกว่าการเพิ่มสตริง (หลบหนี'แต่คุณต้องเพิ่ม `` `) ทำไมจุดถึงอยู่ตรงนั้น?
KarlKastor

วูบส์.เป็นของที่ระลึกจากรหัสกอล์ฟน้อย การใช้แบ็กสแลชไม่ได้ผลเพราะเมื่อใช้เอาต์พุตจาก\` is \\ `และไม่อนุญาตให้ใช้อักขระซ้ำในการป้อนข้อมูล
Jeremy

1
แลมบ์ดาของคุณหายไปจาก:.
เดนนิส

ขอบคุณ @Dennis ดวงตาของฉันเริ่มขุ่นมัวหลังจากพยายามค้นหาตัวละครทั้งหมดในรายการ;)
Jeremy

1
@Dada: หากคุณต้องการมันอาจจะเป็นinspectour, nicestupor, poeticurns, nopictures, หรือrecountspi inputscoreหรือสำหรับใหม่คุณอาจใช้prunesit(คำอธิบายที่ถูกต้องของนักกอล์ฟรหัสอะไรทำ) ipunster, หรือnursepitอื่น ๆ ในกลุ่ม
Deusovi

11

Dyalog APL ขนาด 8 ไบต์

'∩''⊢'∩⊢

ส่งกลับอักขระเหล่านั้นจากอาร์กิวเมนต์ซ้ายที่มีอยู่ในอาร์กิวเมนต์ขวา (หากอาร์กิวเมนต์ซ้ายไม่มีการซ้ำซ้อน - ในกรณีนี้ - ดังนั้นผลลัพธ์จะไม่มีการซ้ำซ้อน

เป็นอาร์กิวเมนต์

จากนั้นสตริงจะมีสองตัวนั้นบวกกับเครื่องหมายคำพูด (เพิ่มเป็นสองเท่าเนื่องจากอยู่ในสตริง)

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



9

Python 2, 56 46 39 ไบต์

-1 ไบต์ขอบคุณ @Jeremy

lambda a:set(':&()smelt\ bad\'')&set(a)

ฟังก์ชั่นแลมบ์ดานิรนามใช้สตริงส่งคืนชุด

เวอร์ชั่นเก่า:

lambda x,w=set('newmatrixbuspdl_:-)(=,\ \''):w-(w-set(x))

ฉันชอบสิ่งนี้ แต่มันคืนค่าแบ็กสแลชสองอันบน `\\ 'แทนที่จะเป็นเพียงอันเดียว
Jeremy

นอกจากนี้ฉันคิดว่าคุณสามารถบันทึกไบต์ด้วยการเปลี่ยนชื่อแลมบ์ดาเป็นa
เจเรมี

1
@ Jeremy ขอบคุณสำหรับเคล็ดลับ'\\'เป็นเพียงวิธีของงูเหลือมในการแสดงเครื่องหมายแบ็กสแลชในรูปแบบสตริงเนื่องจากอันเดียวจะหนีเครื่องหมายคำพูดสุดท้ายดังนั้นคุณต้องหลบหลีกแบ็กสแลชด้วยแบ็กสแลชเพื่อให้ทำงานได้ พิมพ์print '\\'แล้วคุณจะเห็นว่ามันเป็นเพียงสัญลักษณ์แทนแบ็กสแลชหนึ่งอัน
KarlKastor

คุณจะได้รับถึง 36 lambda a:{*''' lambda&':{}*'''}&{*a}ด้วย
Morgan Thrapp

1
@MorganThrapp 35lambda a:{*' lambda&\\\':{}*'}&{*a}
seequ

9

Perl 6 , 56, 55 ไบต์

" French " / รุ่น Unicode (55 ไบต์)

say perl q.say perlq$*IN\\\.comb:..comb$*IN.comb:

" Texas " / ASCII เวอร์ชัน (56 ไบต์)

say (q.sayq(&) $*IN\\\.combperl..comb (&)$*IN.comb).perl
say perl q.sayq(&) $*IN\\\.comb:perl..comb (&)$*IN.comb:

Non-แข็งแรงเล่นกอล์ฟ:

my \Source = 'my \\Source = \'say ( $*IN.comb.Set ∩ Source.comb.Set ).perl\'';
say ( $*IN.comb.Set  Source.comb.Set ).perl

ตัวอย่าง:

$ echo -n 'say perl q.say perlq∩$*IN\\\.comb:..comb∩$*IN.comb:' > test-unicode.p6

$ echo -n 'say (q.sayq(&) $*IN\\\.combperl..comb (&)$*IN.comb).perl' > test-ascii.p6

$ perl6 test-ascii.p6 <<< 'abcdefghijklmnopqrstuvwxyz'
set("p","a","l","r","c","q","b","s","e","m","y","o")

$ perl6 test-unicode.p6 < test-unicode.p6
set("\\","I","p"," ","a","c","l","r","q","b","∩","*","s","m","e",".","y",":","o","N","\$")

$ perl6 test-ascii.p6 < test-ascii.p6
set("p","\\","I"," ","a","l","r","c","q","b",")","*","s","e","m","\&",".","(","y","o","N","\$")

$ perl6 test-ascii.p6 < test-unicode.p6
set("p","\\","I"," ","a","l","r","c","q","b","*","s","e","m",".","y","o","N","\$")

$ perl6 test-unicode.p6 <<< 'Albert Einstein'
set(" ","l","r","b","s","e")

$ perl6 test-unicode.p6 <<< '\__( O__O)_/'
set("\\"," ")

$ perl6 test-ascii.p6 <<< '!@#$%^&*()_+{}|:"<>?'
set(")","*","\&","(","\$")

$ perl6 test-unicode.p6 <<< "1234567890-=[]\\;',./"
set("\\",".")

$ perl6 test-unicode.p6 <<< '(ノಠ益ಠ)ノ彡┻━┻'
set()

“¤>%,oỊȤʠ“ØụĊ5D³ṃṠɼQ»j;Ç;“;}¶”
set("o")

$ perl6 test-unicode.p6 <<< '┬──┬ ノ( ゜-゜ノ)'
set(" ")


$ perl6 test-ascii.p6 <<< 'Far out in the uncharted backwaters of the unfashionable end of the Western Spiral arm of the Galaxy lies a small unregarded yellow sun. Orbiting this at a distance of roughly ninety-eight million miles is an utterly insignificant little blue-green planet whose ape-descended life forms are so amazingly primitive that they still think digital watches are a pretty neat idea.'
set("p"," ","a","l","r","c","b","s","e","m",".","y","o")

2
ไม่สามารถ$*PROGRAMเข้าถึงซอร์สโค้ดของโปรแกรมและละเมิดกฎได้หรือไม่
celtschk

@celtschk ฉันควรอ่านคำถามอีกครั้งก่อนโพสต์แก้ไข (ในทางเทคนิคคอมไพเลอร์จะเห็นว่า$*PROGRAMมีการอ่านจากและจัดเก็บแหล่งข้อมูลทั้งหมดเป็นสตริงในโปรแกรมรวบรวมซึ่งจะทำให้มันกลายเป็นพื้นที่สีเทา)
แบรดกิลเบิร์ต b2gills

8

MATL , 8 ไบต์

'X&'''X&

ลองออนไลน์!

อินพุตเป็นสตริงที่อยู่ในเครื่องหมายคำพูดเดี่ยว หากสตริงมีสัญลักษณ์เครื่องหมายคำพูดเดียวควรทำซ้ำเพื่อหลีกเลี่ยง

คำอธิบาย

'X&'''   % Push string with the three characters used by the program. The single-quote 
         % symbol needs to be escaped by duplicating it
X&       % Take input implicitly. Set intersection. Display implicitly

6

ที่จริงแล้ว 6 ไบต์

`∩è`è∩

ลองออนไลน์!

คำอธิบาย:

`∩è`è∩
`∩è`    push the function `∩è` (which contains every character in the source code except '`')
    è   repr (same as Python repr - leaves "`∩è`", which contains every character in the source code)
      ∩ set intersection with input

5

Haskell (30 ไบต์)

นี่เป็นวิธีแก้ปัญหาที่น่าเบื่อ ... แต่ฉันก็ทำได้ไม่ดี :(

filter(`elem`"f(term)\"i`l\\")

5

Brachylogขนาด 23 ไบต์

:{e.~e":{}e~\"fd\."}fd.

ลองออนไลน์!

คำอธิบาย

:{                 }f      Find all chars that verify the predicate below
                     d.    Remove duplicates and output

  e.                       Take a char from the input ; this is our output…
    ~e":{}e~\"fd\."        … if that char is in the string :{}e~"fd. (the first \ is here
                               to escape the ")

1
คุณช่วยดูห้องแชทของเราได้ไหม?
Leun Nun

1
+1 สำหรับชายหนวด:{และชายหนวดประหลาดใจ:{}
มะนาวที่ถูกทำลาย


4

C, 142 ไบต์

main(i){char*p,a[]="remain([*]){fought?>:01;,\\\"=capsv+-l}";for(;(i=getchar())>=0;p?putchar(i),memmove(p,p+1,a+strlen(a)-p):0)p=strchr(a,i);}

ลองบน ideone


2
เวอร์ชั่นที่ไม่ดีและ / หรือคำอธิบายนั้นยอดเยี่ยมมาก!
YSC

คุณสามารถใช้sizeof aแทนstrlen(a)การบันทึกหนึ่งไบต์ แต่ดียิ่งขึ้นคือการกำหนดขนาดของอาร์เรย์ที่รู้จัก: a[99]="..."และแทนที่strlen(a)ด้วย99เพื่อโกน 5 ไบต์
G. Sliepen

อีก 3 หรือ 4 ไบต์จะถูกบันทึกไว้โดยการแทนที่ด้วย(i=getchar())>=0 read(0,&i,1)สิ่งนี้ใช้ได้กับเครื่องจักรเล็ก ๆ น้อย ๆ iถูกเตรียมใช้งานเป็น 1 หากคุณไม่ได้รันโปรแกรมด้วยอาร์กิวเมนต์ใด ๆ หากคุณต้องการให้มันทำงานบนเครื่องจักรขนาดใหญ่เช่นกันให้ลบ i ออกจากรายการอาร์กิวเมนต์main()และประกาศภายในเนื้อความว่าเป็นถ่าน (แต่คุณประหยัดได้เพียง 3 ไบต์) read()ส่งกลับค่า 0 บน EOF ได้อย่างสะดวก
G. Sliepen

4

CJam, 8 ไบต์

"`q&"`q&

ลองที่นี่

คำอธิบาย:

"`q&"    e# Push that string to the stack
     `   e# Stringify, pops the string and pushes "\"`r&\"" to the stack
      q  e# Pushes the input to the stack
       & e# Union, pops two elements and pushes a list of every element that is contained in both.


4

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

ลบอักขระที่ไม่ได้อยู่ในซอร์สโค้ดจากนั้นลบอักขระที่ซ้ำกัน

[^Ds.n\n[-a_-]

Ds`.

ลองออนไลน์


ซอร์สโค้ดของคุณมีการป้อนบรรทัด (การส่งออกของคุณไม่มี)
Martin Ender

ฉันมีวิธีการแก้ปัญหาเดียวกันก่อนหน้านี้ แต่ลืมโพสต์ คุณสามารถบันทึกสองสามไบต์ด้วยช่วง[-a(จากนั้นรวมเครื่องหมายขีดล่างและยัติภังค์และปล่อย backtick ในบรรทัดที่สอง) แต่สำหรับการอ้างอิงในอนาคต]ไม่จำเป็นต้องหลบหนีหากคุณใส่มันเป็นตัวละครตัวแรก โอ้และเพื่อความดีคุณสามารถสลับสองขั้นตอนเพื่อหลีกเลี่ยงการป้อนบรรทัดต่อท้าย
Martin Ender

@MartinEnder สิ่งนี้ยังคงไม่ซ้ำซ้อนกับตัวดึงข้อมูลบรรทัดนั่นเป็นปัญหาหรือไม่
mbomb007

โอ้คุณพูดถูกฉันไม่ได้สังเกต คุณจะต้องเพิ่มsตัวเลือกDและระดับตัวละครแล้ว
Martin Ender

4

Mathematica, 35 ไบต์

Characters@"\"#&@C\acehrst⋂"⋂#&

ฟังก์ชั่นไม่ระบุชื่อ ละเว้นข้อความที่สร้างขึ้น รับรายการอักขระเป็นอินพุตและส่งคืนรายการอักขระเป็นเอาต์พุต อักขระ Unicode เป็น U + 22C2 \[Intersection]สำหรับ


4

C #, 36 ไบต์

s=>s.Intersect("s=>.Interc(\"\\);");

การส่งแบบตั้งใจคือFunc<string, IEnumerable<char>>( stringอินพุต, IEnumerable<char>เอาต์พุต)



4

เป็นกลุ่ม, 78 68 78 79 61 การกดแป้น

เปลี่ยนแนวทางของฉันโดยสิ้นเชิง:

oo/\$kjxd<esc>/o<cr>xj$/\/<cr>xj$/\\<cr>xj$/$<cr>xj$/k<cr>xj$/x<cr>xj$/j<cr>xj$/d<cr>xkdd

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

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


แบ็กสแลชอยู่ในรหัสของคุณ แต่ดูเหมือนจะไม่อยู่ในสตริงของคุณ
ติตัส

ไม่ใช่อันที่สามใช่ไหม
เลมอนที่ถูกทำลายได้

4

Bash , 45 50 41 39 37 34 29 ไบต์

-9 ไบต์ขอบคุณ Geoff Reedy
-4 ไบต์ขอบคุณ Dennis
-5 ไบต์ขอบคุณ Nahuel Fouilleul

grep -o '[] [|\'\'grepouniq-]

ลองออนไลน์!


คุณไม่เพียงต้องการคำสั่ง grep เพียงคำสั่งเดียว
Geoff Reedy

@GeoffReedy คำสั่ง grep แรกแยกอินพุตเป็นหนึ่งอักขระต่อบรรทัด
เดนนิส

ถูกต้อง แต่ไม่สามารถใส่ -o ไปยัง grep ตัวที่สองได้
Geoff Reedy

คุณพูดถูกและนั่นช่วยไม่ได้ตรวจสอบ '.' ขอบคุณ!
Riley

1
@Titus หลังจากทุบตีมันไม่ได้เป็นสิ่งที่ได้รับ grep และ-o ดังนั้นจึงมองหาสิ่งเหล่านี้:[] [|\'grepouniq-] [ ] {space} [ | {slash} ' g r e p o u n i q - ]
Riley

3

PowerShell v4 +, 122 104 ไบต์

([char[]]($args[0]+'acegfhmnoprstu012|][()"?+_,.$-{0}{1}{2}'-f("'","}","{"))|group|?{$_.count-gt1}).name

ฮึ. Quines หรือรหัสคล้าย Quine ใน PowerShell sucks เนื่องจากการจัดรูปแบบการเปลี่ยนสตริงนั้นเป็นเรื่องที่น่าเบื่อ

สตริงที่ace...{2}อยู่ตรงกลางคือตัวละครทุกตัวที่อยู่ในรหัสที่เหลือ {0}{1}{2}ถูกนำมาใช้ร่วมกับ-fผู้ประกอบการ ORMAT ที่จะดึง'{}ตัวละครเข้าไปในสตริง

ที่รวมกันเป็น char-array กับอินพุต$argsจากนั้นป้อนเข้าสู่ไปป์ไลน์ จุดแรกคือจุดGroup-Objectที่สร้าง hashtable ของวัตถุอินพุตและจำนวนครั้งที่เกิดขึ้นในอินพุต นั่นคือการประปาจะเลือกเฉพาะรายการที่มีมากกว่า เราแค็ปซูลที่ parens และถอนส่วนของ hashtable (ซึ่งเป็นที่ที่ความต้องการของ v4 + มาเล่นมิฉะนั้นเราจะต้องเพิ่มสเตจเพิ่มเติมไปที่ pipage)|?{...}Where-Object.count1.Name|Select Name

อิลิเมนต์เหล่านั้นถูกทิ้งไว้บนไพพ์ไลน์ (ในฐานะอาร์เรย์) และการพิมพ์นั้นมีความหมาย


3

Python 2, 44 ไบต์

x='c=set;print c(`x`)&c(raw_input())';exec x

เพียงเพื่อความสนุกนี่คือการส่งโปรแกรมแบบเต็ม quine เอาต์พุตการแทนค่าสตริงของชุด Python 2


3

JavaScript (ES6), 59 57 ไบต์

f=
t=>[..."\"().=>O[\\]defilnrtx~"].filter(e=>~t.indexOf(e))
;
<input placeholder=Input oninput=o.value=f(this.value).join``><input placeholder=Output id=o>

ส่งกลับอาร์เรย์ของตัวละครที่มีอยู่ในทั้งสตริง / อาร์เรย์ตัวละครเดิมและรหัสที่มา แก้ไข: บันทึก 2 ไบต์ด้วย @ user81655


f=s=>[...new Set(f+'')]...สามารถบันทึกไบต์
user81655

หรือสั้นกว่านี้:f=s=>[...s].filter(c=>(new Set(f+'')).has(c))
user81655

@ user81655 อย่างน้อยใน Firefox f+''ทำงานได้โดยการอ่านfซอร์สโค้ดของ (ในบางกรณีคุณอาจได้รับของ Firefox ที่จะผิดพลาดโดยการเปลี่ยนแฟ้มแหล่งที่มาและจากนั้นพยายามที่จะ stringify ฟังก์ชั่นโหลดจากมัน.)
นีล

@ user81655 ตัวอย่างที่สองของคุณล้มเหลวเมื่อsมีองค์ประกอบที่ซ้ำกันและindexOfสั้นกว่าnew Setนั้น
Neil

ในกรณีนี้คุณสามารถลองบันทึกตัวอักษร (เช่นการเปลี่ยนcพารามิเตอร์เป็นอักขระที่มีอยู่แล้วในรายการ)
user81655

3

Matlab ขนาด 37 ไบต์

ค่อนข้างง่าย:

ใช้ตัวบิวอินintersectเพื่อค้นหาสี่แยก รหัสแหล่งที่มาคือรหัสยาก ต้องป้อนข้อมูลภายในเครื่องหมายอัญประกาศ''

intersect(input(''),'''intersc(pu),')

คุณควรใช้ฟังก์ชั่นที่ไม่ระบุชื่อ ... เอาชนะคุณ 5 ไบต์
Sanchises

อิอิผมคิดว่าที่ไม่ได้กอล์ฟที่ดีที่สุดของฉัน ...
สตีวีกริฟฟิ

3

JavaScript (Chrome 58 บน OS X 10), 12654 12426 11992 Bytes

https://paste.ubuntu.com/25593218/

https://paste.ubuntu.com/25595798/

https://paste.ubuntu.com/25595831/

รหัสเดิม:

var t=prompt();"!+()[]".split("").forEach(function(f){if(t.includes(f))alert(f)})

นี่ถูกแปลงเป็นรูปแบบการเขียนโปรแกรมที่เรียกว่า jsfk ซึ่งใช้เพียงหกตัวอักษรเหล่านี้

(+)[!] 

ใช้คอมไพเลอร์ออนไลน์


หากjsfkเป็นภาษาคุณควรใช้สิ่งนั้นในส่วนหัวแทน Javascript
NonlinearFruit

1
@NonlinearFruit jsfk คือการเขียนโปรแกรมสไตล์ เป็นจาวาสคริปต์ที่ถูกต้อง
Tornado547

2

R, 129 ไบต์

f=function(s){b=strsplit("f=unctio(s){arpl;,[1]b\\\"qemh0T}",c())[[1]];cat(b[unique(pmatch(strsplit(s,c())[[1]],b,0,T))],sep="")}

ถ้าฉัน ungolf bมันต้องมีสิ่งแปลกเปลี่ยนแปลงเช่นบรรทัดใหม่ในสตริงสำหรับ อย่างไรก็ตามมันง่ายสุด ๆ - สร้างเวกเตอร์ด้วยตัวละครทั้งหมดในฟังก์ชั่น จากนั้นจะดึงอินพุตเป็นเวกเตอร์และตรวจสอบความเป็นสมาชิก


คุณยังไม่ได้เข้าเยี่ยมชมเว็บไซต์ในเกือบปี แต่f=function(s)cat(instersect(strsplit(s,"")[[1]],strsplit("f=unctio(s)aerpl,\\\"[1]","")[[1]]),sep="")เป็น 101 ไบต์และผมคิดว่ารูปแบบของ I / O สามารถจะง่ายโดยไม่ต้องcat...
จูเซปเป้

2

Ruby, 34 + nflag = 35 bytes

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

p $_.chars&"\\\"p $_.chars&".chars

2

ListSharp , 222 ไบต์

STRG S=READ[<here>+"\\S.txt"]
ROWS T=ROWSPLIT S BY [""]
ROWS R=ROWSPLIT "STRG =EAD[<her>+\".tx]OWPLIBYCFMHVNc#isn()oay\r\n" BY [""]
ROWS R=SELECT FROM T WHERE[EVERY STRG IS ANY STRG IN R]
SHOW=<c#R.Distinct().ToArray()c#>

ไร้สาระ แต่อิ่มเอม


2

sed, 47 ตัวอักษร

:s;st[^])(*\1.s2t:[;^]tt;st\(.\)\(.*\1\)t\2t;ts

ฉันรู้สึกผิดหวังเล็กน้อยที่ความยาวของสิ่งนี้ออกมาโดยเฉพาะอย่างยิ่งบิตที่จะลบตัวอักษรซ้ำ ๆ


รุ่นใดของ sed นี้ GNU sed sed: -e expression #1, char 47: unterminated `s' commandกล่าวว่า
เดนนิส

43 ไบต์รวมถึง 1 สำหรับ -r: sed -r ':;ss[^][str().*\12;:^]ss;ss(.)(.*\1)s\2s;t' ฉันเขียนก่อนที่จะสังเกตเห็นคุณและมันก็ดูเหมือนจะคล้ายกันมาก
izabera

@Dennis คงที่; กลายเป็นมี: หลังจาก [ทำให้มันลองและแยกชั้นเรียนตัวอักษร
เจฟฟ์ Reedy

@izabera ดีฉันค่อนข้างประหลาดใจที่คำสั่ง: ไม่จำเป็นต้องใช้ป้ายกำกับจริงๆและมันเปลี่ยนความหมายของ t โดยไม่มีป้ายกำกับ
Geoff Reedy

ใช่มันเป็น gnuism
izabera

2

Java 8 lambda, 152 142 140 ตัวอักษร

ค่อนข้างสั้น:

s->s.chars().mapToObj(i->(char)i).filter(c->"COSTab\"\\cefh(i)j+l-mn.oprstuv>".contains(""+c)).collect(java.util.stream.Collectors.toSet())

หรืออวดดีที่นี่:

public class Q89400 {

    static Set<Character> inAndQuine(String in) {
        return in.chars()
                .mapToObj(i->(char)i)
                .filter(c->"COSTab\"\\cefh(i)j+l-mn.oprstuv>".contains(""+c))
                .collect(java.util.stream.Collectors.toSet());

    }
}

แน่นอนว่าทางออกที่ไม่ดีนั้นไม่ถูกต้องเนื่องจากมันไม่ตรงกับวงเล็บปีกกาและตัวละครอีกหลายตัว

ฟังก์ชันรับอินพุตเป็น a Stringและส่งคืนjava.util.Set<Character>อักขระที่มีอยู่ซึ่งมีอยู่ทั้งอินพุตและแหล่งที่มา

อัพเดท

มันกลับกลายเป็นว่าโซลูชันไม่ทำงาน ฉันคิดว่าString#containsการทดสอบการจับคู่ regex แต่เป็นเพียงการจับคู่ตามตัวอักษร ฉันได้เพิ่มการหลบหนีเพื่ออ้างถึงตัวละครที่ชอบ.แต่นี่ไม่จำเป็น แต่ทำลายทุกอย่างแทน ตอนนี้ไม่มีการหลบหนีเราจะช่วยตัวละครบางตัวและตอนนี้มันใช้งานได้จริง :)

ขอบคุณ @NonlinearFruit ที่ทำให้ฉันนึกถึงการใช้ตัวแปรหนึ่งตัว


เปลี่ยนชื่อinเป็นอักษรตัวเดียวเช่นa
NonlinearFruit

3
@Nonlinear ผลไม้คุณพูดถูก: ฉันจะลืมมันได้ยังไง?
Frozn

2

SQF , 71 69 64 ไบต์

การใช้รูปแบบ file-as-a-function:

i="-_h ;""=()sSplitrng"splitString"";i-(i-(_this splitString""))

โทรมา "STRING" call NAME_OF_COMPILED_FUNCTION

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