Nhân vật thứ hai không lặp lại là gì?


18

Dựa trên câu hỏi này từ Code Review

Đưa ra một chuỗi các ký tự ASCII có thể in trống, xuất ký tự không lặp lại thứ hai . Ví dụ, cho đầu vào DEFD, đầu ra F.

Đầu vào

Đầu ra

  • Ký tự thứ hai không lặp lại, khi đọc từ trái sang phải, một lần nữa ở định dạng phù hợp.
  • Ký tự đầu ra không phân biệt chữ hoa chữ thường.
  • Nếu không có ký tự nào như vậy tồn tại (ví dụ: tất cả các ký tự lặp lại), hãy xuất một chuỗi trống.

Quy tắc

  • Các thuật toán nên bỏ qua trường hợp. Đó là, Ddđược tính là cùng một nhân vật.
  • Một chương trình đầy đủ hoặc một chức năng được chấp nhận.
  • Chuỗi đầu vào sẽ được đảm bảo không trống (nghĩa là có ít nhất một ký tự).
  • Chuỗi đầu vào là ASCII. Bất kỳ ký tự hợp lệ nào cũng có thể lặp lại, không chỉ chữ và số (bao gồm cả khoảng trắng).
  • Sơ hở tiêu chuẩn bị cấm.
  • Đây là vì vậy tất cả các quy tắc chơi gôn thông thường đều được áp dụng và mã ngắn nhất (tính bằng byte) sẽ thắng.

Ví dụ

Đầu vào là trên dòng đầu tiên, đầu ra là trên dòng thứ hai.

DEFD
F

FEED
D

This is an example input sentence.
x

...,,,..,,!@
@

ABCDefgHijklMNOPqrsTuVWxyz
B

AAAAAABBBBB


Thisxthis


This this.
.

8
Nếu nó không phân biệt chữ hoa chữ thường, tôi sẽ xem xét thực hiện nó trong Forth. Chuỗi hoạt động hút trong ngôn ngữ đó, mặc dù.
mbomb007

Nếu ngôn ngữ của tôi không hỗ trợ chữ thường thì sao?
Adám

@ Adám Nó có sử dụng một trang mã khác không? Thông thường nó sẽ nhập một chuỗi ASCII như thế nào nếu nó không hỗ trợ các chữ cái viết thường?
admBorkBork

1
Hệ thống tôi có trong đầu có trang mã 7 bit; một trang mã tiêu chuẩn được sửa đổi trong đó các chữ cái viết hoa chiếm vị trí chữ thường và các vị trí chữ hoa được sử dụng cho glyphs. Điều này đã được thực hiện trên các hệ thống APL cũ để người ta có thể sử dụng Shift để truy cập glyphs APL, trong khi các chữ cái không được dịch chuyển là thủ đô kiểu mã hóa cổ điển.
Adám

Câu trả lời:


10

MATL , 11 byte

tk&=s1=)FT)

Điều này thoát với một lỗi (được mặc định cho phép) nếu không có ký tự không lặp lại thứ hai.

Hãy thử trực tuyến!

Giải trình

t      % Implicitly take input string. Duplicate
k      % Convert to lowercase
&=     % 2D array of equality comparisons
s      % Sum of each column
1=     % True for entries that equal 1
)      % Apply logical index to the input string to keep non-repeated characters
TF)    % Apply logical index to take 2nd element if it exists. Implicitly display 

Các ninja chỉnh sửa đình công một lần nữa. : P
Dennis

@Dennis Hahaha. Chà, tôi đoán bạn sẽ sớm loại bỏ một vài byte
Luis Mendo

10

Võng mạc , 25 byte

i!2=`(.)(?<!\1.+)(?!.*\1)

Hãy thử trực tuyến! (Dòng đầu tiên cho phép chạy mã trên bộ kiểm tra của một số đầu vào.)

Giải trình

Đây chỉ là một trận đấu regex duy nhất, regex là:

(.)(?<!\1.+)(?!.*\1)

Đó là, khớp một ký tự và đảm bảo nó không xuất hiện ở bất kỳ nơi nào khác trong đầu vào. Phần còn lại là cấu hình:

  • i kích hoạt trường hợp không nhạy cảm.
  • ! bảo Retina in các trận đấu trái ngược với việc đếm chúng.
  • 2= nói với Retina chỉ in trận đấu thứ hai trái ngược với tất cả chúng.

1
Ah, cảm ơn vì đã dạy tôi về 2=.
Rò rỉ Nun

6

05AB1E, 15 12 byte

l©v®y¢iy}}1@

Giải thích

l©            # store lower case string in register
  v     }     # for each char in lower case string
   ®y¢iy      # if it occurs once in string, push it to stack
         }    # end if
          1@  # push the 2nd element from stack and implicitly display

Dùng thử trực tuyến

Đã lưu 3 byte nhờ @Adnan


Hoặc cho 12 byte l©v®y¢iy}}1@:).
Ad Nam

@Ad Nam: Đẹp quá! Không nghĩ đến việc sử dụng @.
Emigna

5

Python 2, 59 58 byte

Trả về danh sách một ký tự hoặc danh sách trống nếu không có đầu ra. (Trường hợp ngu ngốc vô cảm ...)

s=input().lower();print[c for c in s if s.count(c)<2][1:2]

Dùng thử trực tuyến



Đó không phải là đầu vào hợp lệ. Người dùng không bao giờ phải thoát khỏi đầu vào của họ.
mbomb007

4
Chắc chắn đó là. Chúng tôi cung cấp danh sách trên STDIN theo định dạng danh sách của ngôn ngữ. Tại sao các chuỗi sẽ khác nhau?
Dennis

5

Thạch , 11 byte

Œlµḟœ-Q$Ḋḣ1

Hãy thử trực tuyến! hoặc xác minh tất cả các trường hợp thử nghiệm .

Làm thế nào nó hoạt động

Œlµḟœ-Q$Ḋḣ1  Main link. Argument: s (string)

Œl           Convert s to lowercase.
  µ          Begin a new, monadic chain. Argument: s (lowercase string)
       $     Combine the two links to the left into a monadic chain.
      Q        Unique; yield the first occurrence of each character.
    œ-         Perform multiset subtraction, removing the last occurrence of each
               character.
   ḟ         Filterfalse; keep characters that do not appear in the difference.
        Ḋ    Dequeue; remove the first character.
         ḣ1  Head 1; remove everything but the first character.

4

Mẻ, 171 byte

@echo off
set a=.
set s=%~1
:l
if "%s%"=="" exit/b
set c=%s:~0,1%
call set t=%%s:%c%=%%
if "%s:~1%"=="%t%" set a=%a%%c%
set s=%t%
if "%a:~2%"=="" goto l
echo %c%

Công thức thay thế, cũng 171 byte:

@echo off
set a=.
set s=%~1
:l
if "%s%"=="" exit/b
set c=%s:~0,1%
set t=%s:~1%
call set s=%%s:%c%=%%
if "%s%"=="%t%" set a=%a%%c%
if "%a:~2%"=="" goto l
echo %c%

Không thể làm cho nó chạy trên W2008R2. Dòng "bộ cuộc gọi ..." mở rộng thành "bộ cuộc gọi t =% s: D =%" và hủy bỏ với thông báo "Cú pháp của lệnh không chính xác".
meden

@meden Xin lỗi, một số lỗi chính tả len lỏi vào bài viết của tôi. Giveaway chết là bài viết ngắn hơn tôi đã nói! Bây giờ họ đã sửa.
Neil

3

Bình thường, 16 15 byte

1 byte nhờ @ mbomb007

= rz1.xhtfq1 / zTzk
= rz1: fq1 / zTz1 2

Bộ thử nghiệm.


2
Tôi thậm chí không biết Pyth, nhưng nếu bạn nói như vậy. : D
mbomb007

@ mbomb007 Bạn biết đấy, [1:2]mẹo.
Leaky Nun

Bạn có thể lưu một byte với t<…2thay vì :…1 2. Bạn có thể lưu một byte khác bằng cách chuyển =rz1sang sử dụng đầu tiên, nếu bạn cũng thay đổi 1thành Z(đối với chữ thường thay vì đầu ra chữ hoa) : t<fq1/zT=rzZ2.
Anders Kaseorg

3

Trên thực tế, 19 byte

;╗`ù╜ùc1=`░ε;(qq1@E

Hãy thử trực tuyến!

Giải trình:

;╗`ù╜ùc1=`░ε;(qq1@E
;╗                   push a copy of input to reg0
  `ù╜ùc1=`░          [v for v in s if
   ù╜ùc1=              s.lower().count(v.lower()) == 1]
           ε;(qq     append two empty strings to the list
                1@E  element at index 1 (second element)

3

C #, 129 128 byte

char c(string i){var s=i.Where((n,m)=>i.ToLower().Where(o=>o==Char.ToLower(n)).Count()<2).ToArray();return s.Length>1?s[1]:' ';}

hoạt động tốt Tôi ước tôi không cần phải viết thường mọi thứ


Ném một IndexOutOfRangeException khi tôi vượt qua "Thisxthis" này làm đối số. Ngoài ra, tôi nghĩ rằng == 1 có thể được thay đổi thành <2.
Yytsi

2

C # lambda với Linq, 63 byte

s=>(s=s.ToUpper()).Where(c=>s.Count(C=>c==C)<2).Skip(1).First()

Bạn sẽ có thể thay thế .Skip(1).First()bằng.ElementAt(1)
aloisdg nói Phục hồi

Thậm chí tốt hơn, bạn có thể chuyển đổi sang danh sách và sử dụng chỉ mục.ToList()[1]
aloisdg cho biết Phục hồi lại

Điều này đưa ra một ngoại lệ cho các đầu vào như "", "AABB" và "AABBC", trong đó không có ký tự trùng khớp ở vị trí thứ 2. Tôi nghĩ rằng bạn cần FirstOrDefault.
Grax32

2

C #, 141 byte

void p(){var x=Console.ReadLine().ToLower();var c=0;foreach(char i in x){if(x.Split(i).Length-1<2){if(++c==2){Console.WriteLine(i);break;}}}}

Không ngắt (nhỏ nhất), 135 byte

void p(){var x=Console.ReadLine().ToLower();var c=0;foreach(char i in x){if(x.Split(i).Length-1<2){if(++c==2){Console.WriteLine(i);}}}}

Với for (;;), 150 byte

void p(){for(;;){var x=Console.ReadLine().ToLower();var c=0;foreach(char i in x){if(x.Split(i).Length-1<2){if(++c==2){Console.WriteLine(i);break;}}}}}

Phản đối với ý kiến

void p()
{
    var x=Console.ReadLine().ToLower();//Get lowercase version of input from STDIN
    var c=0; //Create "count" integer
    foreach(char i in x){//For each char in input from STDIN
        if(x.Split(i).Length-1<2)//If current char occurs once in input from STDIN
        {
            if(++c==2){ //Add 1 to count and if count is 2
                Console.WriteLine(i); //Print result to STDOUT
                break; //Exit foreach
            } //End of IF
         } //End of IF
     } //End of FOREACH
} //End of VOID

12 byte được lưu bởi TuukkaX (thay đổi đếm thành c).

3 byte được lưu bởi TuukkaX (thay đổi chuỗi thành var).

4 byte được TuukkaX lưu trong "With for (;;)" (đã thay đổi trong khi (true) thành for (;;)).

2 byte được lưu bởi TuukkaX (đã thay đổi c ++; if (c == 2) thành if (++ c == 2)).

14 byte được lưu bởi Bryce Wagner (đã thay đổi x.ToCharArray () thành x).


@TuukkaX ồ, thật đấy. cảm ơn bạn!
r3pear

Chào mừng đến với PPCG! Đó là một bài viết đầu tiên tốt đẹp! Vì các quy tắc đề cập rằng câu trả lời cho vấn đề này phải là hàm hoặc chương trình đầy đủ, mã của bạn yêu cầu một số điều chỉnh nhỏ. Bạn cũng có thể lưu byte bằng cách sử dụng varthay vì stringvà có một cái gì đó như cthay vì count.
Yytsi

@TuukkaX Cảm ơn bạn một lần nữa! Tôi sẽ sớm sửa đổi mã và thay đổi chuỗi thành var.
r3pear

@TuukkaX Tôi có nên thêm một cái gì đó như void chương trình () {} ???
r3pear

Có, nhưng đặt tên hàm một byte để lưu byte! :)
Yytsi

2

mã máy x86, 43 byte

Trong hex:

FC31C031C95641AC84C0740E3C6172F63C7A77F28066FFDFEBEC5EAC49740B89F751F2AE5974F44A77F1C3

Hàm lấy một con trỏ tới chuỗi đầu vào trong (E) SI và một số nguyên trong (E) DX và trả về ký tự không lặp lại (E) DX-th hoặc 0 nếu không có ký tự đó. Là một tác dụng phụ, nó chuyển đổi chuỗi thành chữ hoa.

Tháo gỡ:

fc             cld
31 c0          xor    eax,eax
31 c9          xor    ecx,ecx
56             push   esi
_loop0:                         ;Search for the NULL char,
41             inc    ecx       ;counting the length in the process
ac             lodsb
84 c0          test   al,al
74 0e          je     _break0   ;NULL found, break
3c 61          cmp    al,0x61   ;If char is
72 f6          jb     _loop0    ;between 'a' and 'z'
3c 7a          cmp    al,0x7a   ;convert this char
77 f2          ja     _loop0    ;to uppercase in-place
80 66 ff df    and    byte ptr [esi-0x1],0xdf
eb ec          jmp    _loop0
_break0:
5e             pop    esi       ;Reset pointer to the string
_loop:                          ;ECX=string length with NULL
ac             lodsb            ;Load next char to AL
49             dec    ecx
74 0b          je     _ret      ;End of string found, break (AL==0)
89 f7          mov    edi,esi   ;EDI points to the next char
51             push   ecx
f2 ae          repnz scasb      ;Search for AL in the rest of the string
59             pop    ecx
74 f4          je     _loop     ;ZF==1 <=> another instance found, continue
4a             dec    edx
77 f1          ja     _loop     ;If not yet the EDX-th non-rep char, continue
_ret:
c3             ret

2

APL, 32 byte

{⊃1↓⍵/⍨1=+/∘.=⍨(⎕UCS ⍵)+32×⍵∊⎕A}

Hãy thử nó | | Tất cả các trường hợp thử nghiệm

Giải trình:

                (⎕UCS ⍵)+32×⍵∊⎕A  Add 32 to uppercase letters
            ∘.=⍨                    Make an equality matrix
          +/                        Check how many matches
    ⍵/⍨1=                           Keep elements with 1 match
  1↓                                Drop the first one
⊃                                   Return the second one

Tôi đã định đăng nó với 16 byte, nhưng tôi nhận ra nó phải không phân biệt chữ hoa chữ thường ...


1
(⎕UCS ⍵)+32×⍵∊⎕A819⌶⍵
Adám

Tôi chưa bao giờ thấy nhà điều hành đó trước đây. Phiên bản nào nó hoạt động?
Woustmao

Nó được gọi là chùm tia i . Đây là một nhà điều hành trong tất cả các phiên bản của Dyalog APL. Ban đầu nó là một chức năng trong các phiên bản APL cũ của IBM cho các cuộc gọi đặc biệt tới hệ thống IBM. Hiểu rồi? IBM - i-chùm ?
Adám


Chà, tôi đã học được điều gì đó mới. tryapl.org dường như không nhận ra nó, vậy bạn có phiền nếu tôi chỉ sử dụng liên kết TIO của bạn không?
Woustmao


1

Toán học, 49 byte

Cases[Tally@ToUpperCase@#,{_,1}][[2,1]]~Check~""&

Chức năng ẩn danh. Đưa ra một danh sách các ký tự làm đầu vào. Bỏ qua mọi lỗi được tạo ra.


1

JavaScript (Firefox 48 trở về trước), 60 byte

f=s=>(m=s.match(/(.).*\1/i))?f(s.replace(m[1],"","gi")):s[1]

Trả về undefinednếu chỉ có 0 hoặc một ký tự không lặp lại. Hoạt động bằng cách xóa trường hợp không nhạy cảm xóa tất cả các lần xuất hiện của các ký tự xuất hiện nhiều lần trong chuỗi. Dựa vào tiện ích mở rộng không chuẩn của Firefox đã bị xóa trong Firefox 49. 119 phiên bản ES6 91 byte:

f=s=>(m=s.match(/(.).*?(\1)(.*\1)?/i))?f((m[3]?s:s.replace(m[2],"")).replace(m[1],"")):s[1]

Tìm kiếm đệ quy cho tất cả các ký tự xuất hiện ít nhất hai lần trong chuỗi. Nếu ký tự xuất hiện chính xác hai lần thì cả hai lần xuất hiện sẽ bị xóa nếu không chỉ lần xuất hiện đầu tiên bị xóa (các lần xuất hiện khác sẽ bị xóa sau). Điều này cho phép sự xuất hiện để có một trường hợp khác biệt.


Tôi tin rằng bạn thực sự có thể điều chỉnh câu trả lời Firefox 48 của mình để tuân thủ ES6 bằng cách thay thế m[1]bằngnew RegExp(`${m[1]}`,"gi")
Ink Ink

@ KevinLau-notKenny Điều đó sẽ không hiệu quả đối với các ký tự đặc biệt và tôi đã tốn 33 byte cho trường hợp đặc biệt, khiến tôi mất tới 93, thật không may.
Neil

Noooooo không phải là nhân vật đặc biệt! Bây giờ tôi cũng phải chỉnh sửa câu trả lời Ruby của mình để phù hợp với họ.
Mực giá trị

1

J, 25 byte

(1{2{.]-.]#~1-~:)@tolower

Sử dụng

   f =: (1{2{.]-.]#~1-~:)@tolower
   f 'DEFD'
f
   f 'FEED'
d
   f 'This is an example input sentence.'
x
   f '...,,,..,,!@'
@
   f 'ABCDefgHijklMNOPqrsTuVWxyz'
b
   f 'AAAAAABBBBB'

   f 'Thisxthis'

   f 'This this.'
.

Giải trình

(1{2{.]-.]#~1-~:)@tolower  Input: s
                  tolower  Converts the string s to lowercase
              ~:           Mark the indices where the first time a char appears
            1-             Complement it
         ]                 Identity function to get s
          #~               Copy only the chars appearing more than once
      ]                    Identity function to get s
       -.                  Remove all the chars from s appearing more than once
   2{.                     Take the first 2 chars from the result (pad with empty string)
 1{                        Take the second char at index 1 and return it

1

Bash, 58 byte

tr A-Z a-z>t
tr -dc "`fold -1<t|sort|uniq -u`"<t|cut -c2

Thận trọng: Điều này tạo ra một tập tin tạm thời có tên t . Nếu nó đã tồn tại, nó sẽ bị ghi đè.


1

C, 174 byte

int c(char*s){int y=128,z=256,c[384],t;memset(c,0,z*6);for(;t=toupper(*s);s++){c[t]++?c[t]-2?0:c[z+(c[y+c[z+t]]=c[y+t])]=c[z+t]:c[z]=c[y+(c[z+t]=c[z])]=t;}return c[y+c[y]];}

Đây không phải là thực hiện ngắn nhất, nhưng khá hiệu quả. Về bản chất, nó sử dụng danh sách liên kết đôi để duy trì tập hợp các ký tự ứng cử viên và quét chuỗi đầu vào chỉ một lần. Trả về mã ký tự hoặc 0 nếu không tìm thấy.

Một chút phiên bản không linh hoạt:

int c(char*s)
{
    int y=128,z=256,c[384],t;
    //It's basically c[3][128], but with linear array the code is shorter

    memset(c,0,z*6);

    for(;t=toupper(*s);s++)
    {
        c[t]++ ?        // c[0][x] - number of char x's occurrence
            c[t] - 2 ?  // > 0
                0       // > 1 - nothing to do  
                : c[z + (c[y + c[z + t]] = c[y + t])] = c[z + t]  // == 1 - remove char from the list
            : c[z] = c[y + (c[z + t] = c[z])] = t; // == 0 - add char to the end of the list
    }
    return c[y + c[y]];
}

1

C #, 143 byte

char c(string s){var l=s.Select(o=>Char.ToLower(o)).GroupBy(x=>x).Where(n=>n.Count()<2).Select(m=>m.Key).ToList();return l.Count()>1?l[1]:' ';}

1

TSQL, 128 byte

Chơi gôn

DECLARE @ varchar(99)=',,zzzbb@kkkkkkJgg'

,@i INT=99WHILE @i>1SELECT
@i-=1,@=IIF(LEN(@)>LEN(x)+1,x,@)FROM(SELECT
REPLACE(@,SUBSTRING(@,@i,1),'')x)x PRINT SUBSTRING(@,2,1)

Ung dung:

DECLARE @ varchar(99)=',,zzzbb@kkkkkkJgg'

,@i INT=99

WHILE @i>1
  SELECT
    @i-=1,@=IIF(LEN(@)>LEN(x)+1,x,@)
  FROM
    (SELECT 
       REPLACE(@,SUBSTRING(@,@i,1),'')x
    )x

PRINT SUBSTRING(@,2,1)

Vĩ cầm


1

Ruby, 53 byte

Đầu vào là STDIN, đầu ra là STDOUT. Trong Ruby, các vị trí ngoài chỉ mục trong một mảng hoặc trả về chuỗi nil, không được in.

String#countlà một hàm lạ trong Ruby vì thay vì đếm số lần xuất hiện của chuỗi được truyền vào, nó sẽ đếm số lần xuất hiện cho mỗi chữ cái trong chuỗi đó. Điều này thường gây phiền nhiễu nhưng chúng ta có thể sử dụng nó để lợi thế lần này. String#swapcasehoán đổi chữ hoa và chữ thường

$><<gets.chars.reject{|c|$_.count(c+c.swapcase)>1}[1]

Phiên bản cũ không an toàn trước các ký tự đặc biệt như .- 46 byte

$><<gets.chars.reject{|c|$_=~/#{c}.*#{c}/i}[1]

1

Java 8, 172 157 byte

(String s)->{s=s.toLowerCase();for(char i=0,c;s.length()>0;s=s.replace(c+"","")){c=s.charAt(0);if(!s.matches(".*"+c+".*"+c+".*")&&++i>1)return c;}return' ';}

-15 byte .. Tôi đã rất tệ khi chơi golf hồi đó. ;)

Giải trình:

Hãy thử nó ở đây.

(String s)->{                          // Method with String parameter and character return-type
  s=s.toLowerCase();                   // Make the input-String lowercase
  for(char i=0,c;s.length()>0;         // Loop over the characters of `s`
      s=s.replace(c+"","")){           // And after every iteration, remove all occurrences of the previous iteration
    c=s.charAt(0);                     // Get the current first character
    if(!s.matches(".*"+c+".*"+c+".*")  // If it doesn't occur more than once
     &&++i>1)                          // And this was the second one we've found
      return c;                        // Return this second characters
  }                                    // End of loop
  return' ';                           // Else: return an empty character/nothing
}                                      // End of method

1

R , 79 byte

function(z){y=tolower(el(strsplit(z,"")));x=table(y);y[y%in%names(x[x==1])][2]}

Hãy thử trực tuyến!

Tôi chắc chắn cảm thấy như một cái gì đó có thể được chơi golf ở đây. Nhưng tôi thực sự rất thích thử thách này.

Câu trả lời này chia chuỗi thành một vectơ ký tự, thay đổi tất cả thành chữ thường và bảng chúng (đếm chúng). Các ký tự xuất hiện một lần được chọn và so sánh với các ký tự trong vectơ đã nói ở trên, thì giá trị thứ hai là true được trả về làm đầu ra. Một chuỗi rỗng hoặc một chuỗi không có ký tự lặp lại xuất ra NA.



1

K (oK) / K4 , 11 byte

Giải pháp:

*1_&1=#:'=_

Hãy thử trực tuyến!

Giải trình:

*1_&1=#:'=_ / the solution
          _ / convert input to lowercase
         =  / group alike characters
      #:'   / count (#:) each group
    1=      / 1 equal to length of the group?
   &        / where true
 1_         / drop the first
*           / take the first


0

Perl, 75 byte

 my$s=<>;chomp$s;my$c;for my$i(split//,$s){my$m=@{[$s=~/$i/gi]};$m<2and++$c>=2and say$i and last}

0

Javascript (sử dụng Thư viện bên ngoài) (107 byte)

Nghiền nát điều này bằng cách sử dụng một thư viện tôi đã viết. Không chắc chắn nếu tôi phải đếm khai báo của biến "s", đó là chuỗi trong câu hỏi.

(s)=>_.From(s).ToLookup(y=>y.toLowerCase(),z=>z).Where(g=>g.Value.Count()==1).Select(x=>x.Key).ElementAt(1)

Điều này sẽ xử lý đầu vào chuỗi trống, đầu vào chỉ có một ký tự không lặp lại và đầu vào có hơn 2 ký tự không lặp lại

Hình 1


Bạn có một liên kết đến thư viện trong câu hỏi? Ngoài ra, đây là mã golf, bạn phải lấy khoảng trắng ở nơi bạn có thể
Giá trị mực

Này, vâng, đó là github.com/mvegh1/Enumerable . Chưa có tài liệu nào. Xin lỗi, tôi sẽ xóa câu trả lời này để giảm càng nhiều khoảng trắng
applejacks01

Bạn có lẽ nên đề cập và liên kết nó trong cơ thể câu trả lời. Ngoài ra, liên quan đến bytecount, sự đồng thuận là đưa nó vào một lambda ẩn danh (vì vậy s=> ...)
Ink Ink

Ok không vấn đề gì Tôi không muốn xúc phạm bất cứ ai bằng cách liên kết đến mã của tôi, nhưng tôi đã đề cập đến việc tôi đã sử dụng thư viện của mình. Tôi sẽ cập nhật câu trả lời của mình với lambda, cảm ơn vì đã cho tôi biết
applejacks01

0

Clojure, 109 byte

#(let[s(clojure.string/lower-case %)](or(second(remove(set(map(fn[[k v]](if(> v 1)k))(frequencies s)))s))""))

Ồ, tôi hy vọng có một cách cô đọng hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.