দ্বিতীয় পুনরাবৃত্তি চরিত্র কি?


18

কোড পর্যালোচনা থেকে এই প্রশ্নের উপর ভিত্তি করে

মুদ্রণযোগ্য ASCII অক্ষরগুলির একটি খালি খালি স্ট্রিং দেওয়া, দ্বিতীয় অ-পুনরাবৃত্তি চরিত্রের আউটপুট । উদাহরণস্বরূপ, ইনপুট জন্য DEFD, আউটপুট F

ইনপুট

আউটপুট

  • দ্বিতীয় চরিত্র পুনরাবৃত্তি হয় না, যখন বাম-থেকে-ডান পড়া উপযুক্ত বিন্যাসে আবার।
  • আউটপুট চরিত্রটি কেস-সংবেদনশীল।
  • যদি এরূপ কোনও অক্ষর বিদ্যমান না থাকে (যেমন, সমস্ত অক্ষর পুনরাবৃত্তি করে), একটি খালি স্ট্রিং আউটপুট করুন।

বিধি

  • অ্যালগরিদম কেস উপেক্ষা করা উচিত। হল যে, Dএবং dএকই চরিত্র হিসাবে গণনা।
  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
  • ইনপুট স্ট্রিংটি গ্যারান্টিযুক্ত খালি নয় (অর্থাত্ কমপক্ষে একটি অক্ষর দৈর্ঘ্যে)।
  • ইনপুট স্ট্রিংটি ASCII। যে কোনও বৈধ অক্ষর পুনরাবৃত্তি করতে পারে, কেবলমাত্র বর্ণানুক্রমিক নয় (এটিতে স্পেস অন্তর্ভুক্ত)।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

ইনপুট প্রথম লাইনে আছে, আউটপুট দ্বিতীয় লাইনে রয়েছে।

DEFD
F

FEED
D

This is an example input sentence.
x

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

ABCDefgHijklMNOPqrsTuVWxyz
B

AAAAAABBBBB


Thisxthis


This this.
.

8
যদি এটি কেস-সংবেদনশীল না হয় তবে আমি ফোর্থে এটি করার বিষয়টি বিবেচনা করব। স্ট্রিং অপারেশনগুলি যদিও সেই ভাষায় স্তন্যপান করে।
mbomb007

আমার ভাষা যদি ছোট হাতের অক্ষরকে সমর্থন করে না?
অ্যাডম

@ অ্যাডম এটি কী আলাদা কোড পৃষ্ঠা ব্যবহার করে? যদি এটি ছোট হাতের অক্ষরকে সমর্থন না করে তবে কীভাবে এটি সাধারণত ASCII স্ট্রিংটি ইনপুট করে?
অ্যাডমবর্কবার্ক

1
আমার মনে যে সিস্টেমটি মনে ছিল তাতে 7-বিট কোড পৃষ্ঠা ছিল; একটি পরিবর্তিত স্ট্যান্ডার্ড কোড পৃষ্ঠা যেখানে বড় হাতের অক্ষরগুলি ছোট হাতের অবস্থানগুলি দখল করে এবং বড় হাতের অবস্থানগুলি গ্লাইফগুলির জন্য ব্যবহৃত হত। এটি পুরানো এপিএল সিস্টেমে করা হয়েছিল যাতে কেউ এপিএল গ্লিফগুলি অ্যাক্সেসের জন্য শিফট ব্যবহার করতে পারে, অন্যদিকে শিরোনামহীন অক্ষরগুলি ক্লাসিক কোডিং-শৈলীর রাজধানী ছিল।
অ্যাডম

উত্তর:


10

এমএটিএল , 11 বাইট

tk&=s1=)FT)

এটি দ্বিতীয় ত্রুটিযুক্ত অক্ষর না থাকলে ত্রুটি (ডিফল্টরূপে অনুমোদিত) দিয়ে বের হয়।

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

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 

নিনজা সম্পাদনা আবার ধর্মঘট করে। : পি
ডেনিস

@ ডেনিস হাহাহা ঠিক আছে, আমি অনুমান করি আপনি খুব শীঘ্রই বেশ কয়েকটি বাইট সরিয়ে
ফেলবেন

10

রেটিনা , 25 বাইট

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

এটি অনলাইন চেষ্টা করুন!(প্রথম লাইনটি বেশ কয়েকটি ইনপুটগুলির পরীক্ষার স্যুটে কোড চালানো সক্ষম করে))

ব্যাখ্যা

এটি কেবল একটি একক রেজেক্স ম্যাচ, রেজেেক্স হচ্ছে:

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

এটি, কোনও চরিত্রের সাথে মেলে এবং নিশ্চিত করুন যে এটি ইনপুটটিতে অন্য কোথাও প্রদর্শিত হবে না। বাকিটি কনফিগারেশন:

  • i কেস সংবেদনশীলতা সক্রিয়।
  • ! রেটিনাকে ম্যাচগুলি গণনার বিপরীতে মুদ্রণ করতে বলে।
  • 2= রেটিনাকে তাদের দ্বিতীয়টির বিপরীতে কেবল দ্বিতীয় ম্যাচটি মুদ্রণ করতে বলে।

1
আহ, আমাকে সম্পর্কে শেখানোর জন্য ধন্যবাদ 2=
লিকি নুন

6

05 এ বি 1 ই, 15 12 বাইট

l©v®y¢iy}}1@

ব্যাখ্যা

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

এটি অনলাইনে চেষ্টা করুন

@ আদনানকে 3 বাইট সংরক্ষণ করা হয়েছে


বা 12 বাইট জন্য l©v®y¢iy}}1@:)।
আদনান

@ আদনান: চমৎকার! @ ব্যবহার করার কথা ভাবেননি।
এমিগানা

5

পাইথন 2, 59 58 বাইট

একক অক্ষরের একটি তালিকা, বা আউটপুট না থাকলে একটি খালি তালিকা প্রদান করে। (বোকা কেস-সংবেদনশীলতা ...)

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

এটি অনলাইনে চেষ্টা করুন



এটি বৈধ ইনপুট নয়। ব্যবহারকারীর তাদের ইনপুটটি কখনই পালাতে হবে না।
mbomb007

4
এটা নিশ্চিত. আমরা ভাষার তালিকা বিন্যাসে STDIN এ তালিকা সরবরাহ করি। স্ট্রিংগুলি অন্যরকম কেন হবে?
ডেনিস

5

জেলি , 11 বাইট

Œlµḟœ-Q$Ḋḣ1

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

কিভাবে এটা কাজ করে

Œ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

ব্যাচ, 171 বাইট

@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%

বিকল্প গঠনও, 171 বাইট:

@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%

এটি W2008R2 এ চালানো যায় না। লাইন "কল সেট ..." প্রসারিত "কল সেট টি =% s: ডি =%" এ প্রসারিত হয় এবং "কমান্ডের বাক্য গঠনটি ভুল" বার্তাটি সহ বন্ধ করে দেয়।
মেডেন

@ মিডেন দুঃখিত, কিছু টাইপস আমার পোস্টে প্রবেশ করেছে। মৃত শরণাপনা হ'ল পোস্টটি আমার চেয়ে কম বলেছিল! তারা এখন ঠিক আছে।
নীল

3

পাইথ, 16 15 বাইট

1 বাইট @ এমবম্ব007 ধন্যবাদ

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

পরীক্ষা স্যুট.


2
আমি পাইথকেও চিনি না, তবে আপনি যদি বলেন। : ডি
mbomb007

@ mbomb007 আপনি জানেন, [1:2]কৌশলটি।
ফাঁস নুন

এর t<…2পরিবর্তে আপনি একটি বাইট সংরক্ষণ করতে পারেন :…1 2। আপনি চলন্ত দ্বারা অন্য বাইট সংরক্ষণ করতে পারবেন =rz1, এর প্রথম ব্যবহার করেন তাহলে আপনি পরিবর্তন 1করতে Z(পরিবর্তে ছোট হাতের বড় হাতের আউটপুট): t<fq1/zT=rzZ2
অ্যান্ডারস ক্যাসরগ


3

সি #, 129 128 বাইট

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]:' ';}

ঠিকভাবে কাজ করে. আমি চাই সমস্ত কিছু ছোট করার দরকার পড়েনি


আমি যখন আর্গুমেন্ট হিসাবে "থেক্সথিস" এটি পাস করি তখন একটি সূচিপত্র ছাড়িয়ে দেয় x তা বাদে, আমি মনে করি যে == 1 কে <2 এ পরিবর্তন করা যেতে পারে।
ইয়াতসি

2

সি # ল্যাম্বদা সাথে লিনক, 63 বাইট

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

আপনি এর .Skip(1).First()সাথে প্রতিস্থাপন করতে সক্ষম হবেন.ElementAt(1)
অ্যালোআইএসডিজি

আরও ভাল আপনি তালিকাতে রূপান্তর করতে পারেন এবং সূচকটি ব্যবহার করতে পারেন.ToList()[1]
এলয়েসডজি বলেছেন পুনর্নির্মাণ মনিকা

এটি "", "এএবিবি", এবং "এএবিবিসি" এর মতো ইনপুটগুলির জন্য একটি ব্যতিক্রম ছুঁড়ে দেয়, যেখানে ২ য় অবস্থানে কোনও মিলের অক্ষর নেই। আমার মনে হয় আপনার প্রথম ফার্স্ট ডিফল্ট দরকার।
Grax32

2

সি #, 141 বাইট

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;}}}}

বিরতি ছাড়াই (সবচেয়ে ছোট), 135 বাইট

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);}}}}

(;;) জন্য, 150 বাইট সহ

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;}}}}}

মন্তব্যে অসম্পূর্ণ

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 বাইট সংরক্ষণ করা হয়েছে (গণনা সিটিতে পরিবর্তন করুন)।

টুক্কাএক্স দ্বারা 3 বাইট সংরক্ষণ করা হয়েছে (স্ট্রিংটি ভারে পরিবর্তন করুন)।

"উইথ ফর (;;)" তে টুক্কাএক্স দ্বারা 4 টি বাইট সংরক্ষণ করা হয়েছে (পরিবর্তিত (সত্য)) এর জন্য (;;)) এ।

টুকুকএক্স দ্বারা 2 বাইট সংরক্ষণ করা হয়েছে (সি ++ পরিবর্তিত হয়েছে; যদি (সি == 2) তবে (++ সি == 2))।

ব্রাইস ওয়াগনার দ্বারা 14 টি বাইট সংরক্ষণ করা হয়েছে (x.ToCharArray () কে x এ পরিবর্তন করেছেন)।


@ TuukkaX ওহ, সত্যিই। ধন্যবাদ!
r3pear

পিপিসিজিতে আপনাকে স্বাগতম! এটি একটি সুন্দর প্রথম পোস্ট! যেহেতু বিধিগুলি উল্লেখ করেছে যে এই সমস্যার উত্তরগুলি হ'ল ফাংশন বা সম্পূর্ণ প্রোগ্রাম হওয়া উচিত, আপনার কোডগুলিতে সামান্য টুইটের প্রয়োজন। varপরিবর্তে stringকিছু ব্যবহার করে এবং এর cপরিবর্তে কিছু ব্যবহার করে আপনি বাইটগুলিও সংরক্ষণ করতে পারেন count
ইয়াতসি

@ টুকুএক্সএক্স আবার ধন্যবাদ! খুব শীঘ্রই আমি কোডটি পরিবর্তন করব এবং স্ট্রিংটি ভেরিতে পরিবর্তন করব।
r3pear

@ টুকুএক্সএক্সে কি আমাকে শূন্যকরণ প্রোগ্রামের মতো কিছু যুক্ত করা উচিত?)
r3pear

হ্যাঁ, তবে বাইটগুলি সংরক্ষণ করতে একটি বাইট ফাংশনের নাম দিন! :)
ইয়াতসি

2

x86 মেশিন কোড, 43 বাইট

হেক্সে:

FC31C031C95641AC84C0740E3C6172F63C7A77F28066FFDFEBEC5EAC49740B89F751F2AE5974F44A77F1C3

ফাংশনটি (E) এসআই এবং (E) DX এর একটি পূর্ণসংখ্যার ইনপুট স্ট্রিংয়ের জন্য একটি পয়েন্টার নেয় এবং (E) DX-th নন-পুনরাবৃত্তি অক্ষর বা শূন্যটি প্রদান করে যদি এমন কোনও অক্ষর না থাকে। পার্শ্ব-প্রতিক্রিয়া হিসাবে এটি স্ট্রিংটিকে আপার ক্ষেত্রে রূপান্তর করে।

disassembly:

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

এপিএল, 32 বাইট

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

চেষ্টা করে দেখুন || সমস্ত পরীক্ষার কেস

ব্যাখ্যা:

                (⎕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

আমি এটি 16 বাইট দিয়ে পোস্ট করতে যাচ্ছিলাম, কিন্তু আমি বুঝতে পারি এটি কেস-সংবেদনশীল হতে হবে ...


1
(⎕UCS ⍵)+32×⍵∊⎕A819⌶⍵
অ্যাডাম

আমি এই অপারেটর এর আগে কখনও দেখিনি। এটি কোন সংস্করণে কাজ করে?
ওয়ুফম্যাও

একে আই-বিম বলে । এটি ডায়ালগ এপিএল এর সমস্ত সংস্করণে অপারেটর। আইবিএম সিস্টেমে বিশেষ কল করার জন্য এটি মূলত আইবিএম এর এপিএল এর পুরানো সংস্করণগুলির একটি ফাংশন ছিল। এটা নাও? আইবিএম - আই-বিম ?
অ্যাডম

সাধারণভাবে এবং পরিষেবার জন্য ডকুমেন্টেশন 819 ("819" for "বিআইজি")। এটি অনলাইন চেষ্টা করুন!
অ্যাডাম

ঠিক আছে, আমি নতুন কিছু শিখেছি। tryapl.org এটি স্বীকৃত বলে মনে হচ্ছে না, তাই যদি আমি কেবল আপনার টিআইও লিঙ্কটি ব্যবহার করি তবে আপনি কি আপত্তি করবেন?
ওউফমও


1

গণিত, 49 বাইট

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

বেনামে ফাংশন। ইনপুট হিসাবে অক্ষরের একটি তালিকা নেয়। উত্পন্ন যে কোনও ত্রুটি উপেক্ষা করুন।


1

জাভাস্ক্রিপ্ট (ফায়ারফক্স 48 বা তার আগের), 60 বাইট

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

রিটার্নস undefinedযদি সেখানে মাত্র শূন্য বা এক অ পুনরাবৃত্তি অক্ষর। অক্ষরে অক্ষরে অক্ষরে স্ট্রিংয়ের একাধিকবার উপস্থিত সমস্ত অক্ষর মুছে ফেলার মাধ্যমে কাজ করে। ফায়ারফক্স 49-এ সরানো হয়েছে এমন একটি অ-স্ট্যান্ডার্ড ফায়ারফক্স এক্সটেনশনের উপর নির্ভর করে 119 119 91 বাইট ES6 সংস্করণ:

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

স্ট্রিংয়ে কমপক্ষে দু'বার উপস্থিত সমস্ত অক্ষরকে পুনরাবৃত্তভাবে অনুসন্ধান করে। যদি চরিত্রটি ঠিক দু'বার প্রদর্শিত হয় তবে উভয় ঘটনা মুছে ফেলা হবে অন্যথায় কেবল প্রথম ঘটনাটি মুছে ফেলা হবে (অন্যান্য ঘটনাগুলি পরে মুছে ফেলা হবে)। এটি সংঘটনগুলিকে একটি পার্থক্যের ক্ষেত্রে থাকতে দেয়।


আমি বিশ্বাস করি আপনি প্রকৃতপক্ষে আপনার ফায়ারফক্স ৪৮ টি উত্তরকে ES6- এর m[1]সাথে সামঞ্জস্য করে অভিযোজিত করতে পারেনnew RegExp(`${m[1]}`,"gi")
মান কালি

@ কেভিনলউ-নোট কেনি এটি বিশেষ চরিত্রগুলির জন্য কাজ করবে না এবং দুর্ভাগ্যক্রমে, আমাকে বিশেষত ক্ষেত্রে 33 বাইট খরচ হয়েছে।
নিল

বিশেষ চরিত্রে নয়! আমার রুবি উত্তরগুলি তাদের পক্ষেও ঠিক এখনই সম্পাদন করতে হয়েছিল।
মূল্য কালি

1

জে, 25 বাইট

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

ব্যবহার

   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.'
.

ব্যাখ্যা

(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

বাশ, 58 বাইট

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

সাবধানতা: এটি টি নামে একটি অস্থায়ী ফাইল তৈরি করে । এটি ইতিমধ্যে বিদ্যমান থাকলে এটি ওভাররাইট করা হবে।


1

সি, 174 বাইট

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]];}

এটি সবচেয়ে সংক্ষিপ্ত নয়, তবে বেশ কার্যকর বাস্তবায়ন। সংক্ষেপে এটি প্রার্থীদের অক্ষরের অর্ডারযুক্ত সেটটি বজায় রাখতে ডাবল-লিঙ্কযুক্ত তালিকা ব্যবহার করে এবং একবারে ইনপুট স্ট্রিংটি স্ক্যান করে। কিছু না পাওয়া গেলে চরিত্রের কোড বা শূন্য প্রদান করে।

সামান্য বিড়বিড় সংস্করণ:

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

সি #, 143 বাইট

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

টিএসকিউএল, 128 বাইট

Golfed:

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)

Ungolfed:

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)

বেহালা


1

রুবি, 53 বাইট

ইনপুটটি STDIN, আউটপুটটি STDOUT। রুবিতে, কোনও অ্যারে বা স্ট্রিং রিটার্নে আউট-অফ-ইনডেক্স অবস্থান nil, যা মুদ্রিত নয়।

String#countরুবির একটি অদ্ভুত ফাংশন কারণ এতে যে স্ট্রিংটি হয়েছে তার জন্য সংখ্যার সংখ্যা গণনা না করে এটি স্ট্রিংয়ের প্রতিটি অক্ষরের সংখ্যার সংখ্যা গণনা করে। এটি সাধারণত বিরক্তিকর তবে আমরা এটি এখন আমাদের সুবিধার জন্য ব্যবহার করতে পারি। String#swapcaseউপরের এবং লোয়ার কেস চিঠিগুলি অদলবদল করে।

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

পুরানো সংস্করণ যা বিশেষ অক্ষরের বিরুদ্ধে নিরাপদ ছিল না .- 46 বাইট

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

1

জাভা 8, 172 157 বাইট

(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 বাইট .. ডাং আমি তখন গল্ফ করতে খারাপ ছিলাম। ;)

ব্যাখ্যা:

এখানে চেষ্টা করুন।

(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

আর , 79 বাইট

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

এটি অনলাইন চেষ্টা করুন!

আমি স্পষ্টভাবে মনে করি এখানে কিছু গল্ফ করা যেতে পারে। তবে আমি সত্যিই এই চ্যালেঞ্জটি উপভোগ করেছি।

এই উত্তরটি অক্ষরগুলির একটি ভেক্টরগুলিতে স্ট্রিংকে বিভক্ত করে, তাদের সকলকে নিম্ন কেসিতে পরিবর্তন করে এবং সেগুলি সারণী করে (তাদের গণনা করে)। অক্ষরগুলি যা একবার নির্বাচিত হয় এবং পূর্বোক্ত ভেক্টরের মধ্যে বর্ণগুলির সাথে তুলনা করা হয়, তারপরে দ্বিতীয় মানটি সত্য হিসাবে আউটপুট হিসাবে ফিরে আসে। একটি খালি স্ট্রিং, বা কোনও পুনরাবৃত্তি অক্ষর নয় এমন একটি স্ট্রিং NA কে আউটপুট করে।






0

জাভাস্ক্রিপ্ট (বাইরের গ্রন্থাগার ব্যবহার করে) (107 বাইট)

আমার লেখা লাইব্রেরি ব্যবহার করে এটি চূর্ণবিচূর্ণ হয়েছে। নিশ্চিত না যে আমাকে ভেরিয়েবল "গুলি" এর ঘোষণার গণনা করতে হবে, যা প্রশ্নে স্ট্রিং।

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

এটি একটি খালি স্ট্রিং ইনপুট, কেবলমাত্র একটি পুনরাবৃত্তি না করা অক্ষর সহ একটি ইনপুট এবং 2+ পুনরাবৃত্তি না করা অক্ষরের সাথে একটি ইনপুট পরিচালনা করবে

ছবি 1


আপনার কাছে প্রশ্নযুক্ত লাইব্রেরির কোনও লিঙ্ক আছে? এছাড়াও, এই কোড গল্ফ হ'ল, আপনি যেখানেই পারেন শুকনো জায়গা নিতে হবে
মান কালি

আরে, হ্যাঁ এটি github.com/mvegh1/ গণনীয় । এখনও কোনও দস্তাবেজ নেই। দুঃখিত, আমি এই উত্তরটি যতটা সাদা জায়গা কমাতে পরিষ্কার করব
Applejacks01

আপনি সম্ভবত উত্তর বডি এ উল্লেখ এবং লিঙ্ক করা উচিত। এছাড়াও, বাইটোক্যান্ট সম্পর্কে, sensক্যমত্য এটি একটি বেনাম ল্যাম্বডায় (তাই s=> ...) স্থাপন করা হবে
মান কালি

ঠিক আছে, সমস্যা নেই. আমি আমার কোডের সাথে লিঙ্ক করে কাউকে আপত্তি করতে চাইনি, তবে আমি উল্লেখ করেছি যে আমি আমার লাইব্রেরিটি ব্যবহার করেছি। আমি
ল্যাম্বদা

0

ক্লোজার, 109 বাইট

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

ওহ, আমি আশা করি আরও একটি সুসংগত উপায় আছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.