ค้นหาคำที่ 'ไม่เหมือนใคร' มากที่สุด


12

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

  • ตัวอักษรที่ไม่ซ้ำกันควรจะรวมถึงตัวละครที่แตกต่างใด ๆ โดยใช้UTF-8 เข้ารหัส
    • เวอร์ชันตัวพิมพ์ใหญ่และตัวพิมพ์เล็กของอักขระเดียวกันนั้นแตกต่างกันและแตกต่างกัน 'a' != 'A'
  • คำถูกผูกไว้ด้วยอักขระช่องว่างใด ๆ
  • 'จดหมาย' เป็นสัญลักษณ์ใด ๆ ที่สามารถแสดงด้วยอักขระ Unicode เดียว
  • รหัสของคุณจะต้องอ่านเอกสารข้อความ - ไม่อนุญาตให้โหลดข้อความล่วงหน้าหรือเข้ารหัสรหัสล่วงหน้า
  • ผลลัพธ์ควรเป็นคำตามด้วยจำนวนตัวอักษรที่ไม่ซ้ำกัน
    • llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch - 18
    • ตัวคั่น / ระยะห่างระหว่างค่าทั้งสองนั้นขึ้นอยู่กับคุณตราบใดที่มีอย่างน้อยหนึ่งตัวอักษรที่จะแยกพวกเขา
  • ในกรณีที่มีมากกว่าหนึ่งคำที่มีจำนวนสูงสุดให้พิมพ์คำทั้งหมดสำหรับการนับนั้นโดยมีการขึ้นบรรทัดใหม่หนึ่งบรรทัด
    superacknowledgement - 16
    pseudolamellibranchiate - 16
  • นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดจึงชนะ

คำตอบนี้เป็นภาษาอังกฤษ SE เป็นแรงบันดาลใจให้ฉันสร้างความท้าทายนี้ ตัวอย่างใช้เพียงรายการคำแต่ข้อความใด ๆ ควรสามารถประมวลผลได้


1
คำแยกกันอย่างไร คุณพูดว่าตัวอักษรที่ไม่ซ้ำกันคืออักขระ UTF-8 ใด ๆ แต่นั่นก็หมายความว่าไฟล์ทั้งหมดเป็นเพียงคำเดียว
cardboard_box

1
คุณจะกำหนดตัวอักษรที่นี่ได้อย่างไร อย่างที่ฉันเพิ่งได้รับและชี้ให้เห็นหนึ่งในภาษาอังกฤษคำตอบ SE LlanfairPGเป็นคำภาษาเวลส์และมีตัวอักษรจากตัวอักษรภาษาเวลส์ - llและchเป็นทั้งตัวอักษรเดี่ยวในภาษาเวลส์
Gareth

1
@ กาเร็ ธ ฉันไม่ได้ตระหนักถึงความแตกต่างนั่นเป็นความผิดพลาดของฉัน มี 'Unicode' ที่เป็นตัวแทนของทั้งสองตัวอักษรหรือไม่? สำหรับจุดประสงค์ของการท้าทายนี้อักขระยูนิโค้ดแต่ละตัวจะเป็นตัวอักษร
Gaffi

1
ดังนั้นabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+~`<>/\\?'";:{}[],."คำ" ที่ถูกต้องคืออะไร?
Shmiddty

2
นอกหัวข้อ แต่เห็นได้ชัดว่าเคยมีตัวอักษรเดียวสำหรับ LL และ ll ในภาษาเวลส์ อย่างน้อย Unicode มี U + 1EFA และ U + 1EFB สำหรับสิ่งเหล่านั้น "Middle-Welsh" มันเรียกพวกเขาว่า แม้ว่าจะไม่มีชื่อไฟล์ Ll ก็ตาม
นาย Lister

คำตอบ:


7

APL (56)

{⎕ML←3⋄⊃{⍵,⍴∪⍵}¨W[⍙]⍴⍨↑+/∆∘.=∆←∆[⍙←⍒∆←↑∘⍴∘∪¨W←⍵⊂⍨⍵≠' ']}

นี่คือฟังก์ชั่น (คำถามบอกว่าได้รับอนุญาต) ที่รับสตริงและส่งกลับเมทริกซ์ของคำและความยาวที่ไม่ซ้ำ

การใช้งาน:

      {⎕ML←3⋄⊃{⍵,⍴∪⍵}¨W[⍙]⍴⍨↑+/∆∘.=∆←∆[⍙←⍒∆←↑∘⍴∘∪¨W←⍵⊂⍨⍵≠' ']}'The quick brown fox jumps over the lazy dog.'
quick 5
brown 5
jumps 5

คำอธิบาย:

  • ⎕ML←3: ตั้งค่าระดับการย้ายข้อมูลเป็น 3 (เพื่อให้เป็นพาร์ติชันแทนการปิดล้อม)
  • W←⍵⊂⍨⍵≠' ': เก็บในWสตริงที่กำหนดซึ่งแต่ละพาร์ติชันประกอบด้วยอักขระที่ไม่ใช่ช่องว่าง
  • ⍙←⍒∆←↑∘⍴∘∪¨W: ได้รับจำนวนเงิน ( ) ของที่ไม่ซ้ำกัน ( ) องค์ประกอบในแต่ละส่วน ( ¨) ของWและเก็บในเหล่านั้นได้รับการเรียงลำดับลงเรียงลำดับเมื่อเกี่ยวกับเรื่องนี้ ( ) และร้านค้าที่อยู่ใน
  • ∆[⍙... ]: เรียงลำดับโดยดังนั้นตอนนี้เรามีความยาวที่ไม่ซ้ำกันในการสั่งซื้อ
  • ∆∘.=∆←∆: เก็บการเรียงกลับและดูว่าองค์ประกอบใดมีค่าเท่ากัน
  • ↑+/: หาผลรวมของแถว (ตอนนี้เรารู้ว่ามีองค์ประกอบเท่ากันในแต่ละองค์ประกอบ) จากนั้นนำรายการแรก (ตอนนี้เรารู้ว่ามีองค์ประกอบเท่ากันเป็นองค์ประกอบแรกคือจำนวนคำที่ถูกผูกไว้สำหรับสถานที่แรก)
  • W[⍙]⍴⍨: เรียงWตามและใช้ N แรกโดยที่ N คือจำนวนที่เราเพิ่งคำนวณ
  • {⍵,⍴∪⍵}¨: สำหรับคำเหล่านี้แต่ละคำให้รับตัวเองและจำนวนอักขระที่ไม่ซ้ำกันในคำนั้น
  • : จัดรูปแบบเป็นเมทริกซ์

4

Mathematica 96 115

แก้ไข : ตอนนี้รหัสค้นหาคำทั้งหมดที่มีจำนวนอักขระสูงสุด ฉันปฏิเสธที่จะถือจุลภาคเป็นตัวอักษรคำ

f@t := With[{r = {#, Length@Union@Characters@#} & /@ 
StringSplit[t,RegularExpression@"\\W+"]},  Cases[r, {_, Max[r[[All, 2]]]}]]

ตัวอย่าง

f@"It was the best of times,...of comparison only."

หรือ

f@Import["t1.txt"]

{{"เหลือเชื่อ" 10}, {"ยอดเยี่ยม", 10}}


f@"Lorem ipsum... vitae augue."

หรือ

f@Import["t2.txt"]

{"Vestibulum", 9}


ตัวอย่างอีกต่อไป

f@Import["ShakespearesSonnets.txt"]
f@Import["OriginOfSpecies.txt"]
f@Import["DeclarationOfIndependence.txt"]
f@Import["DonQuixoteISpanish.txt"]
f@Import["AliceInWonderland.txt"]
f@Import["UNHumanRightsGerman.txt"]
f@Import["GenesisKJV.txt"]

เซอร์ไพร์ส: คำว่า "ไม่เหมือนใคร" ที่สุดในปฏิญญาอิสรภาพยังเป็นคำที่พิเศษที่สุดในอลิซในแดนมหัศจรรย์ !

{"prognosticate", 11}
{"undiscoverable", 13}
{"อึดอัด", 12}
{"regocijadamente", 12}
{"อึดอัด", 12}
{"Verpflichtung", 13}
{"buryingplace", 12}


สิ่งนี้ส่งคืนคำที่ไม่ซ้ำกันมากที่สุดเพียงคำเดียวเท่านั้นหรือไม่ ควรคืนพวกเขาทั้งหมด เช่น "สุดยอดเหลือเชื่อ 10"
Shmiddty

@Shmiddty ฉันพูดถึงคำวิจารณ์ของคุณ (ราคา 19 ไบต์)
DavidC

4

Python 2 (110 (98 โดยใช้ไฟล์อินพุต))

import sys
f=lambda x:len(set(x))
a=sys.stdin.read().split()
c=max(map(f,a))
for i in a:
 if f(i)==c:print i,c

.

f=lambda x:len(set(x))
a=file('a').read().split()
c=max(map(f,a))
for i in a:
 if f(i)==c:print i,c

สิ่งที่ต้องปรับปรุง: การพิมพ์ (33 ตัวอักษร)

เครื่องหมายวรรคตอนถือเป็นตัวอักษร


Python NameError: global name 'r' is not defined2.7.3: หลังจากเพิ่มราคาเดียวรอบ:r AttributeError: 'file' object has no attribute 'split'Python SyntaxError: invalid syntax 'print i,c'3.3.0:
primo

อ๊ะฉันไม่ได้ทดสอบ ขอบคุณที่พูดแบบนั้นฉันไม่เคยเห็นแบบนั้นมาก่อน สำหรับ Python 3: ใช้งานไม่ได้
beary605

4

นี่คือ codegolf ครั้งแรกของฉันฉันตื่นเต้นมาก :) นั่นก็หมายความว่ามันอาจจะไม่ดีเลย

Groovy 127 117 112 105

แก้ไข: เนื่องจากฟังก์ชั่นที่ได้รับอนุญาตที่นี่เป็นหนึ่งใน 105 ฉันยังเปลี่ยนชื่อตัวแปรเพื่อให้คอลัมน์แรกอ่าน ACDC เพราะนั่นเป็นสิ่งสำคัญในซอร์สโค้ดใด ๆ :

A = {E = {it.toSet (). ขนาด ()}
C = it.text.tokenize ()
D = E (C.max {E (มัน)})
C.grep {e (it) == D} .each {println "$ it $ D"}}

คุณจะเรียกมันว่า:

A (ไฟล์ใหม่ ("words.txt"))

ไม่มีฟังก์ชั่นโดยใช้อินพุตมาตรฐานใน112 :

A = {it.toSet (). ขนาด ()}
ข = System.in.getText (). tokenize ()
c = A (b.max {(มัน)})
b.grep {a (it) == c} .each {println "$ it $ c"}

A = {it.toSet (). ขนาด ()}
ข = System.in.getText (). tokenize (). การจัดเรียง {-a (มัน)}
C = a (ข [0])
b.grep {a (it) == c} .each {println "$ it $ c"}

A = {it.toSet (). ขนาด ()}
System.in.getText (). tokenize (). sort ({- a (it)}). groupBy {a (it)}. take (1) .each {k, v-> v.each {println "$ มัน $ k "}}

อินพุต: Lorem Ipsum Text จากพรีโม่

เอาต์พุตสคริปต์ทั้งหมด:

consequat 9
ullamcorper 9
Vestibulum 9

ใครมีความคิดว่าจะทำให้พวกเขามีแรงมากขึ้นได้อย่างไร


3

Perl 78 ไบต์

map{push$_[keys{map{$_,1}/./g}]||=[],$_}split for<>;print"$_ $#_
"for@{$_[-1]}

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


PHP 128 ไบต์

<?foreach(split(~߃õ,fread(STDIN,1e6))as$s){$w[count(count_chars($s,1))][]=$s;}krsort($w)?><?=join($f=~ß.key($w).~õ,pos($w)),$f;

อักขระตัวเดียวที่พิจารณาว่าเป็นตัวคั่นคำคือ characer 10 และอักขระ 32 ส่วนที่เหลือรวมถึงการลงโทษถูกพิจารณาว่าเป็นส่วนหนึ่งของคำ

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

<?foreach(split(' |
',fread(STDIN,1e6))as$s){$w[count(count_chars($s,1))][]=$s;}krsort($w)?><?=join($f=' '.key($w).'
',pos($w)),$f;

ตัวอย่าง I / O:

อินพุต 1:

It was the best of times, it was the worst of times, it was the age of wisdom,
it was the age of foolishness, it was the epoch of belief, it was the epoch of
incredulity, it was the season of Light, it was the season of Darkness, it was
the spring of hope, it was the winter of despair, we had everything before us,
we had nothing before us, we were all going direct to Heaven, we were all going
direct the other way - in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received, for good
or for evil, in the superlative degree of comparison only.

เอาท์พุท 1:

$ php most-unique.php < input1.dat
incredulity, 11

อินพุต 2:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mollis, nisl sit
amet consequat fringilla, justo risus iaculis justo, vel ullamcorper dui tellus
ut enim. Suspendisse lectus risus, molestie sed volutpat nec, eleifend vitae
ligula. Nulla porttitor elit vel augue pretium cursus. Donec in turpis lectus.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia
Curae; Quisque a lorem eu turpis viverra sodales. Pellentesque justo arcu,
venenatis nec hendrerit a, molestie vitae augue.

เอาท์พุท 2:

$ php most-unique.php < input2.dat
consequat 9
ullamcorper 9
Vestibulum 9

incredulityมี 10 ตัวอักษรที่ไม่ซ้ำกันไม่ใช่ 11
DavidC

@DavidCarraher รหัสของเขารวมถึงเครื่องหมายจุลภาคซึ่งได้รับอนุญาตในทางทฤษฎีผ่านกฎ
Shmiddty

คำอธิบายนั้นไม่น่าเชื่ออย่างแน่นอน
DavidC

2
ไม่เพียงเป็น 'อนุญาตตามหลักทฤษฎี' แต่ให้ถ้อยคำของคำถาม (เฉพาะประเด็นที่ 2 และ 3) ดูเหมือนว่าเป็นข้อกำหนด
primo

@DavidCarraher ใช่เครื่องหมายวรรคตอนเป็นอักขระที่ถูกต้อง สิ่งอื่นนอกเหนือจากช่องว่างถูกต้อง
Gaffi

3

GoRuby 2.0.0 - 66 ตัวอักษร

โซลูชันด้านล่างไม่พบการแข่งขันทั้งหมด แต่มีเพียงรายการเดียว นี่คือรุ่นสุดท้ายของฉัน:

a=$<.r.sp.m{|x|[x,x.ch.u.sz]};a.m{|x|s x*' - 'if x.l==a.m_(&:l).l}

ตัวอย่าง:

Lorem ipsum dolor sit amet, consetetur adipiscing elit. ถ้าเป็นเช่นนั้น, คุณจะต้องนั่งอยู่กับสิ่งที่เกิดขึ้น, fringilla, justo risus iaculis justo, หรือ ullamcorper จากคำสั่งนี้ สิ่งอำนวยความสะดวกการจัดเก็บข้อมูล, วิธีการชำระเงิน, ซึ่งไม่ได้จัดทำบัญชี, บัญชีผู้ใช้ Nulla Porttitor จะช่วยให้คุณเพิ่มโอกาสในการซื้อ donec ใน turpis lectus Vestibulum ante ipsum primis ใน faucibus orci luctus และ ultrices posuere cubilia Curae; ลองดูที่ turkey eu turpis viverra sodales Pellentesque justo arcu, ไม่จำเป็นต้องมี, และ molestie vitae augue.

ผลิต:

$ ruby golf.rb < input.txt
consequat - 9
ullamcorper - 9
Vestibulum - 9

GoRuby 2.0.0 - 29 ตัวอักษร (ไม่ใช่รูปแบบเอาต์พุตที่แน่นอน)

s$<.sp.m{|x|[x.ch.u.sz,x]}.mx

คาดว่าอินพุตจาก stdin แม้ว่ารูปแบบผลลัพธ์จะแตกต่างกันเล็กน้อย ตัวอย่างเช่น:

$ ruby golf.rb < british.1
14
manoeuvrability

GoRuby 2.0.0 - 42 40 ตัวอักษร

s$<.r.sp.m{|x|[x.ch.u.sz,x]}.mx.rv*' - '

คาดว่าอินพุตจาก stdin

Ruby 1.9.3 - 69 65 ตัวอักษร

puts$<.read.split.map{|x|[x.chars.uniq.size,x]}.max.reverse*' - '

คาดว่าอินพุตจาก stdin (เหมือนข้างบน แต่ไม่มีตัวย่อของ GoRuby)


2

Javascript 163 155 152 162 ไบต์

นี่เป็นเรื่องสั้นที่สุดที่ฉันจะได้รับ:

prompt(x=[]).split(/\s/).forEach(function(a){b={};c=0;a.split('').forEach(function(d){b[d]?1:b[d]=++c});x[c]?x[c].push(a):x[c]=[a]});alert((l=x.length-1)+':'+x[l])
prompt(x=[]).split(/\b/).map(function(a){b={};c=0;a.split('').map(function(d){b[d]?1:b[d]=++c});x[c]?x[c].push(a):x[c]=[a]});alert((l=x.length-1)+':'+x[l])
prompt(x=[]).split(/\s/).map(function(a){b=[c=0];a.split('').map(function(d){b[d]?1:b[d]=++c});x[c]=(x[c]||[]).concat(a)});alert((l=x.length-1)+':'+x[l])

prompt(x=[]).split(/\s/).map(function(a){b=[c=0];a.split('').map(function(d){b[d]?1:b[d]=++c});x[c]=(x[c]||[]).concat(a)});alert((l=x.length-1)+':'+x[l].join('\n'))

ในรุ่นนี้/\s/แยกคำที่ขึ้นอยู่กับช่องว่างดังนั้นจึงมีเครื่องหมายวรรคตอนเครื่องหมายจุลภาคระยะเวลา ฯลฯ เป็นส่วนหนึ่งของคำ สิ่งนี้สามารถเปลี่ยน/\b/เป็นไม่รวมได้อย่างง่ายดาย

ฉันจะดูว่าฉันจะทำอะไรกับ for-loops แทน forEaches ได้บ้าง

I / O:

มันเป็นช่วงเวลาที่ดีที่สุดมันเป็นช่วงเวลาที่เลวร้ายที่สุดมันเป็นยุคแห่งปัญญามันเป็นยุคแห่งความโง่เขลามันเป็นยุคแห่งความเชื่อมันเป็นยุคแห่งความเหลือเชื่อมันเป็นฤดูกาลแห่งแสง เป็นฤดูแห่งความมืดมันเป็นฤดูใบไม้ผลิแห่งความหวังมันเป็นฤดูหนาวแห่งความสิ้นหวังเรามีทุกอย่างต่อหน้าเราไม่มีอะไรต่อหน้าเราเราทุกคนจะตรงไปยังสวรรค์เราทุกคนจะตรงไปทางอื่น - ใน สั้นช่วงเวลานั้นไกลเหมือนกับยุคปัจจุบันที่เจ้าหน้าที่ที่มีเสียงดังบางคนยืนยันว่าได้รับไม่ว่าจะดีหรือร้ายในระดับสูงสุดของการเปรียบเทียบเท่านั้น

11:incredulity,

Lorem ipsum dolor sit amet, consetetur adipiscing elit. ถ้าเป็นเช่นนั้น, คุณจะต้องนั่งอยู่กับสิ่งที่เกิดขึ้น, fringilla, justo risus iaculis justo, หรือ ullamcorper จากคำสั่งนี้ สิ่งอำนวยความสะดวกการจัดเก็บข้อมูล, วิธีการชำระเงิน, ซึ่งไม่ได้จัดทำบัญชี, บัญชีผู้ใช้ Nulla Porttitor จะช่วยให้คุณเพิ่มโอกาสในการซื้อ donec ใน turpis lectus Vestibulum ante ipsum primis ใน faucibus orci luctus และ ultrices posuere cubilia Curae; ลองดูที่ turkey eu turpis viverra sodales Pellentesque justo arcu, ไม่จำเป็นต้องมี, และ molestie vitae augue.

9:consequat
ullamcorper
Vestibulum

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

10:Wilbur—this

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

15:thought-criminals.

มีความอึดอัดใจที่อาจเกิดขึ้นกับผลลัพธ์: หากมีหลายคำในผลลัพธ์และหนึ่งในคำที่ลงท้ายด้วยเครื่องหมายจุลภาคก็สามารถแสดงเครื่องหมายจุลภาคสองในแถวซึ่งจะทำให้เกิดความสับสน
Shmiddty

จากสเป็คIn the event more than one word exists with the highest count, print all words for that count, **with one new line delimiting**.
Gaffi

@Gaffi ควรได้รับการแก้ไขแล้ว 10 ไบต์>. <
Shmiddty


2

R - 106 ตัวอักษร
เป็นฟังก์ชันที่มีข้อความอินพุตเป็นพารามิเตอร์:

f=function(t){
s=strsplit
a=sapply
t=s(t," ")[[1]]
w=a(a(s(t,""),unique),length)
n=(w==max(w))
cbind(t[n],w[n])
}

และตัวอย่างบางส่วน:

f("It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way - in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only.")
     [,1]           [,2]
[1,] "incredulity," "11"

f("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mollis, nisl sit amet consequat fringilla, justo risus iaculis justo, vel ullamcorper dui tellus ut enim. Suspendisse lectus risus, molestie sed volutpat nec, eleifend vitae ligula. Nulla porttitor elit vel augue pretium cursus. Donec in turpis lectus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Quisque a lorem eu turpis viverra sodales. Pellentesque justo arcu, venenatis nec hendrerit a, molestie vitae augue.")
     [,1]          [,2]
[1,] "consequat"   "9" 
[2,] "ullamcorper" "9" 
[3,] "Vestibulum"  "9"

หรือR - 100 ตัวอักษร
เป็นฟังก์ชั่นที่มีเส้นทางไปยังไฟล์ข้อความเป็นพารามิเตอร์:

f=function(t){
t=scan(t,"")
a=sapply
w=a(a(strsplit(t,""),unique),length)
n=(w==max(w))
cbind(t[n],w[n])
}

การใช้งาน:

f("t1.txt")
Read 120 items
     [,1]           [,2]
[1,] "incredulity," "11"

ฉันคิดว่าสิ่งนี้หายไป "คุณต้องอ่านเอกสารข้อความด้วยรหัส"
Steven Rumbalski

@StevenRumbalski สิ่งนี้ถูกแก้ไขแล้ว
plannapus

1

Python 176 168

w = "".join((open('c')).readlines()).replace("\n", " ").split(" ")
l = sorted(zip([len(set(w[i])) for i in range(len(w))],w,))
print([x for x in l if l[-1][0] == x[0]])

1

Python3 119

aอ่านจากไฟล์ที่เรียกว่า

r={w:len(set(w))for w in open("a").read().split()};print("\n".join(str((k,v))for k,v in r.items()if v==max(r.values())))

ทดสอบกับข้อความอินพุตจาก @primo:

Input 1:
    ('incredulity,', 11)

Input 2:
    ('Vestibulum', 9)
    ('consequat', 9)
    ('ullamcorper', 9)

0

VBScript - 430 / VBA - 420

VBScript:

Function r(t)
d="Scripting.Dictionary"
Set w=CreateObject(d)
c=1
Do Until c>Len(t)
p=InStr(c,t," ")
i=InStr(c,t,vbCr)
If p<i Then s=i Else s=p
If s=0 Then s=Len(t)+1
f=Mid(t,c,s-c)  
If Not w.Exists(f) Then 
Set x=CreateObject(d)
For l=1 To Len(f)
n=Mid(f,l,1)
If Not x.Exists(n) Then x.Add n,n
Next
w.Add f,f
y=x.Count
If m=y Then z=f &vbCr &z
If m<y Then m=y:z=f
End If
c=s+1
Loop
r=z &" " &m
End Function

VBA:

Function r(t)
d="Scripting.Dictionary"
Set w=CreateObject(d)
c=1
Do Until c>Len(t)
p=InStr(c,t," ")
i=InStr(c,t,vbCr)
s=IIf(p<i,i,p)
If s=0 Then s=Len(t)+1
f=Mid(t,c,s-c)  
If Not w.Exists(f) Then 
Set x=CreateObject(d)
For l=1 To Len(f)
n=Mid(f,l,1)
If Not x.Exists(n) Then x.Add n,n
Next
w.Add f,f
y=x.Count
If m=y Then z=f &vbCr &z
If m<y Then m=y:z=f
End If
c=s+1
Loop
r=z &" " &m
End Function
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.