क्या यह दोहरी बात है?


46

एक में पहले चुनौती मैं कोड गोल्फरों पूछा तार जो एक स्ट्रिंग में प्रत्येक चरित्र नकल का उत्पादन करने के। उदाहरण के लिए:

TThhiiss  iiss  ddoouubbllee  ssppeeaakk!!

यह चुनौती केवल यह पता लगाने के लिए है कि क्या कुछ पाठ एक डबल स्पीक स्ट्रिंग की परिभाषा को पूरा करता है।

  • वर्णों की एक समान संख्या है।
  • जब जोड़े में विभाजित होते हैं, तो प्रत्येक जोड़ी में एक ही वर्ण के दो होते हैं।

चुनौती

  • यह कोड गोल्फ है, इसे कुछ बाइट्स में करें।
  • आपके द्वारा चुनी गई किसी भी भाषा का उपयोग करें।
  • कृपया एक ऑनलाइन दुभाषिया का लिंक शामिल करें।
  • कोड कुछ पाठ को स्वीकार करेगा।
    • सादगी के लिए, इनपुट में केवल मुद्रण योग्य ASCII वर्ण शामिल होंगे
  • यह एक संकेत लौटाएगा कि इनपुट डबल बोल रहा है या नहीं। यह हो सकता था:
    • एक बूलियन
    • स्ट्रिंग्स ('सच', 'गलत', 'हां', 'नहीं' आदि)
    • पूर्णांक 0 या 1

परीक्षण के मामलों:

  • aba - असत्य
  • अब्बा - झूठे
  • आब - सच
  • आबब - असत्य
  • सत्य - सत्य
  • त्तथिहिस - असत्य

6
क्या हमें लंबाई <2 के इनपुट पर त्रुटि हो सकती है?
कोल

3
सुझाया गया टेस्ट केस: abbaजो कि गलत होना चाहिए
Giuseppe

2
सुझाए गए परीक्षण का मामला: aabbbbजो
सत्य

2
@val खैर, मैं मानक I / O
AJFaraday

2
सुझाए गए परीक्षण का मामला: 0जो गलत होना चाहिए
640KB

जवाबों:



24

ब्रेनफक , 20 बाइट्स

जॉय किंग को 1 बाइट दिया।

+>,[>,[-<->]<[<],]<.

इसे ऑनलाइन आज़माएं!

पठनीय आउटपुट!

एक बार में दो वर्णों को ले जाता है, और यदि कोई जोड़ा मेल नहीं खाता है तो टेप पर 1 से दूर चला जाता है। EOF को 0 के रूप में माना जाता है और इस प्रकार स्वचालित रूप से नियंत्रित किया जाता है।

यदि स्ट्रिंग दोहरी बात नहीं है, और 0x01 अगर यह है तो आउटपुट एक अशक्त बाइट है। पढ़ने योग्य संस्करण 14 बाइट्स की कीमत पर इन्हें वर्ण के रूप में आउटपुट करता है।


अगर मैं टिप्पणियों को कम कर सकता हूं तो मैं उपरोक्त टिप्पणी को कम कर दूंगा।
a _ 10

@PerpetualJ A) यह एक सुपर लोकप्रिय एसोलैंग है, मुझे विश्वास नहीं हो रहा है कि आप पहले से ही इसके बारे में बी नहीं सुन चुके हैं) यह कोई कारण नहीं है
रेडवॉल्फ प्रोग्राम्स

@RedwolfPrograms प्रति SE नियम, यदि पोस्ट उपयोगी थी, तो आपको अपवोट करना चाहिए, और यह मुझे उस भाषा का नाम सिखाने में सहायक था जिसे मैंने कभी नहीं सुना था। इसके अलावा, यह एक महान समाधान है जो एक उत्थान के योग्य है।
PerpetualJ

1
@PerpetualJ सहमत हैं कि यह एक महान समाधान है, लेकिन अजीब नाम और उबाऊ समाधान (ज्यादातर BF वेरिएंट) के साथ बहुत सारे एसोलंग हैं
रेडवॉल्फ कार्यक्रम

17

MATL , 4 बाइट्स

Heda

इनपुट एक स्ट्रिंग है, जो एकल qoutes के साथ संलग्न है। आउटपुट 0दोहरे बोलने के लिए है, 1अन्यथा।

इसे ऑनलाइन आज़माएं!

व्याख्या

'TThhiiss iiss ddoouubbllee ssppeeaakk!!'उदाहरण के रूप में इनपुट पर विचार करें ।

H    % Push 2
     % STACK: 2
     % Implicit input (triggered because the next function requires two inputs): string 
     % STACK: 'TThhiiss  iiss  ddoouubbllee  ssppeeaakk!!', 2
e    % Reshape as a 2-column matrix of chars, in column-major order. Pads with char(0)
     % if needed. Note that char(0) cannot be present in the input
     % STACK: ['This is double speak!';
               'This is double speak!']
d    % Difference of each column
     % STACK: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
a    % Any: gives 0 if and only if all elements are 0
     % STACK: 0
     % Implicit display

12
उम ... "हेड़ा" कौन है? : D
आउटगोल्फर

7
"हेड़ा" जर्मन है "हे! यू!"
QBrute

14

05AB1E , 6 5 2 बाइट्स

ιË

वर्णों की सूची के रूप में इनपुट।

@ बग्गी के जाप उत्तर को पोर्ट करके -3 बाइट्स , इसलिए उसे सुनिश्चित करना सुनिश्चित करें!

इसे ऑनलाइन आज़माएं या कुछ और परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

ι   # Uninterleave the (implicit) input-list of characters
    #  i.e. ["t","t","t","t","e","e","s","s","t","t","!","!","!"]
    #   → [["t","t","e","s","t","!","!"],["t","t","e","s","t","!"]]
 Ë  # Check if both inner lists are equal
    #  → 0 (falsey)
    # (after which the result is output implicitly)


10

रेटिना , 9 बाइट्स

(.)\1

^$

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

समान वर्णों की सभी जोड़ी निकालें:

(.)\1

जांचें कि क्या कोई वर्ण नहीं बचा है:

^$

1
आप ^$अपने अंतिम चरण के रूप में उपयोग करके अधिक पारंपरिक आउटपुट प्रदान कर सकते हैं ।
नील

@ नील आह, धन्यवाद! यह वास्तव में बेहतर लग रहा है। मुझे हमेशा लगता है कि यह सच के falseरूप में और trueझूठी के रूप में अजीब आउटपुटिंग है (लेकिन अगर यह एक बाइट बचाता है और इसकी अनुमति है, तो मैं अभी भी इसका उपयोग करूंगा)। ;) लेकिन चूँकि यह अपेक्षित परिणामों के उत्पादन के बराबर बाइट्स समाधान है, इसलिए यह बेहतर है।
केविन क्रूज़सेन

8

1
अरे मुझे यह पसंद है! मुझे एक ही लोल को करने में 80 मिनट लगे, मैं ऐसा था "अरे चलो अब जेली सीखते हैं" तो मैंने सीखा। मैं इसे पोस्ट करने वाला था लेकिन देखा कि क्या जेली के जवाब पहले से ही थे ... और फिर यह देखा ^ ^ मेरे कदम: ¹©s2L€=2Ạa®s2E€Ạ... ḢƝs2E€Ạ... लेकिन मैं जो चाहता था उसे पाने के लिए प्रबंधन नहीं कर सका और फिर मैंने Œœयोग्य देखा
वी। कोर्टोइस

8

स्टैक्स , 5 बाइट्स

■◄┼$Δ

इसे चलाएं और डीबग करें

प्रक्रिया:

  • रन-लंबाई की गणना करें।
  • सरणी का GCD प्राप्त करें।
  • सम है?

आह, आपको एक पैक मिला है। अच्छा लगा।
खुल्द्रेशेथ न'बैरिया

मुझे यह एल्गोरिथम पसंद है!
योना

6

PHP ,58 56 बाइट्स

function f($s){return!$s?:$s[0]==$s[1]&f(substr($s,2));}

इसे ऑनलाइन आज़माएं!

एक पुनरावर्ती कार्य के रूप में।

PHP ,61 56 52 बाइट्स

while(''<$l=$argn[$i++])$r|=$l!=$argn[$i++];echo!$r;

इसे ऑनलाइन आज़माएं!

या स्टैंडअलोन प्रोग्राम। इनपुट स्ट्रिंग थ्रू STDIN, आउटपुट है truthy( 1) अगर यह डबल स्पीक है, और falsey( 0) अगर यह डबल स्पीक नहीं है।

-4 बाइट्स @ रात 2 तक !


1
यह नॉन-डबल स्पीक स्ट्रिंग के लिए आउटपुट 1 और साथ ही डबल स्पीक स्ट्रिंग के लिए प्रतीत होता है।
AJFaraday


6

x86 मशीन कोड, 9 7 बाइट्स

D1 E9       SHR  CX, 1          ; divide length in half 
AD          LODSW               ; load next two chars into AH/AL 
3A E0       CMP  AH, AL         ; compare AH and AL 
E1 FB       LOOPE -5            ; if equal, continue loop

इनपुट स्ट्रिंग इन SI, इनपुट स्ट्रिंग लेंथ CXZFयदि आउटपुट डबल है।

या एक पूर्ण पीसी डॉस निष्पादन योग्य के रूप में 14 बाइट्स :

B4 01       MOV  AH, 01H        ; DOS read char from STDIN (with echo) 
CD 21       INT  21H            ; read first char into AL
92          XCHG DX, AX         ; put first char into DL
B4 08       MOV  AH, 08H        ; DOS read char from STDIN (no echo) 
CD 21       INT  21H            ; read second char into AL
3A C2       CMP  AL, DL         ; compare first and second char 
74 F3       JE   -13            ; if the same, continue loop 
C3          RET                 ; otherwise exit to DOS 

इनपुट STDINपाइप या इंटरेक्टिव के माध्यम से होता है । जब तक एक गैर-दोहरे चरित्र का पता नहीं चलता है, तब तक "डी-डबलडेड" इनपुट प्रतिध्वनित होगा, जिस बिंदु पर बाहर निकलेगा (शायद झुकने वाला आई / ओ थोड़ा सा नियम है, लेकिन यह सिर्फ एक बोनस उत्तर है)।

यहाँ छवि विवरण दर्ज करें

ISDBL2.COM का उपयोग करके निर्माण और परीक्षण करें xxd -r:

00000000: b401 cd21 92b4 08cd 213a c274 f3c3       ...!....!:.t..

मूल 24 बाइट्स पूर्ण पीसी डॉस निष्पादन योग्य:

D1 EE       SHR  SI, 1          ; SI to DOS PSP (080H) 
AD          LODSW               ; load string length into AL 
D0 E8       SHR  AL, 1          ; divide length in half 
8A C8       MOV  CL, AL         ; put string length into BL 
        CLOOP: 
AD          LODSW               ; load next two chars into AH/AL 
3A E0       CMP  AH, AL         ; compare AH and AL 
E1 FB       LOOPE CLOOP         ; if equal, continue loop
        DONE: 
B8 0E59     MOV  AX, 0E59H      ; BIOS tty function in AH, 'Y' in AL 
74 02       JZ   DISP           ; if ZF, result was valid double 
B0 4E       MOV  AL, 'N'        ; if not, change output char to N 
        DISP: 
B4 0E       MOV  AH, 0EH 
CD 10       INT  10H 
C3          RET                 ; return to DOS

कमांड लाइन से इनपुट, स्क्रीन पर आउटपुट 'Y'यदि डबल है, 'N'यदि नहीं।

यहाँ छवि विवरण दर्ज करें

ISDBL.COM का उपयोग करके निर्माण और परीक्षण करें xxd -r:

00000000: d1ee add0 e88a c8ad 3ae0 e1fb b859 0e74  ........:....Y.t
00000010: 02b0 4eb4 0ecd 10c3                      ..N.....

क्रेडिट:

  • -2 बाइट्स @ErikF को thx!

2
2 बाइट्स को बचाने के लिए / के LOOPEबजाय का उपयोग कर सुझाव दें । JNZLOOP
एरिक

@ ErikF, शानदार! पूरी तरह से उस के बारे में भूल गया!
640KB

6

लुआ , 67 66 63 59 33 32 बाइट्स

-25 बाइट्स Giuseppe
के लिए धन्यवाद -1 बाइट वैल के लिए धन्यवाद

print(#(...):gsub("(.)%1","")<1)

इसे ऑनलाइन आज़माएं!

हर दोगुने चरित्र को हटाता है, फिर जाँचता है कि परिणाम खाली है या नहीं।


1
क्यों नहीं बस i:gsub("(.)%1","")और अगर जाँच करें i==""?
गिउसेप्पे

1
यह 34 बाइट्स है, यह पूरी तरह से निश्चित नहीं है क्योंकि मैंने पहले कभी लुआ नहीं लिखा है, लेकिन यह काम करता है।
Giuseppe

हालांकि कोड गोल्फ स्टैक एक्सचेंज में आपका स्वागत है!
Giuseppe

मैंने यह मान लिया कि "(.)%1"खुद में टकराव शामिल हैं, लेकिन यह मेरे लिए नहीं था कि एक बार सभी कैप्चर के लिए इसे प्रतिस्थापित करने के लिए पर्याप्त होगा। क्या मुझे आपका समाधान लागू करना चाहिए या आपको अपना जवाब लिखना चाहिए? और धन्यवाद!
ह्यूगोबिजेनर

1
अछा सुझाव! एक बाइट बचाने के लिए के arg[1]साथ प्रतिस्थापित किया जा सकता है (...)
वैल


5

मठगोल्फ , 2 बाइट्स

½=

इसे ऑनलाइन आज़माएं!

मूल रूप से 05AB1E उत्तर के समान है, ½स्ट्रिंग को सम और विषम वर्णों में विभाजित करता है, फिर समानता की जांच करें। खाली स्ट्रिंग के लिए गुजरता है।


5

जावास्क्रिप्ट, 28 बाइट्स

s=>s.every((x,y)=>x==s[y|1])

इसे ऑनलाइन आज़माएं!


23 बाइट्स रैटल के रेगेक्स का उपयोग करते हुए

s=>/^((.)\2)*$/.test(s)

इसे ऑनलाइन आज़माएं!


24 बाइट्स, लेकिन सही के लिए एक सरणी आउटपुट, nullझूठे के लिए: इसे ऑनलाइन आज़माएं!
16

27 बाइट्सs=>!s.some((x,y)=>x>s[y|1])
टीएस


5

हास्केल , 28 23 बाइट्स

f(x:y:z)|x==y=f z
f[]=1

इसे ऑनलाइन आज़माएं!

बहुत सीधा है। डबल बोल केवल खाली है या दोहरा बोलने के लिए दोहराया जाने वाला चरित्र है।

अब कम सीधा। मेटा सहमति के अनुसार त्रुटि की उपस्थिति या अनुपस्थिति के माध्यम से आउटपुट ; नो एरर का मतलब है डबल बोलना। जब पहले दो वर्ण भिन्न होते हैं या जब विषम संख्या में वर्ण होते हैं तो पैटर्न मिलान विफल हो जाता है। इन बचत के लिए लाइकोनी को धन्यवाद !


4

वी (विम) , 7 बाइट्स

Óˆ±
ø^$

इसे ऑनलाइन आज़माएं! या परीक्षण मामलों को सत्यापित करें

Hexdump:

00000000: d388 b10a d85e 24                        .....^$

सिर्फ दो रेग्जेस। स्पष्टीकरण:

Ó   " Remove all occurrences...
 ˆ  "   Any character
  ± "   Followed by itself
    "   This regex is actually just the compressed form of (.)\1
ø   " Count the number of matches
 ^$ "   An empty line


4

पॉवरशेल , 39 38 बाइट्स

!$($args|?{+$p*($p="$_"[$p-eq$_])};$p)

इसे ऑनलाइन आज़माएं!

जहां $pपिछले चार में शामिल है।

कोई पुनरावृत्ति , कोई रेगेक्स :)। एक आकर्षक स्ट्रिंग के माध्यम से चार-सरणी के रूप में इनपुट लेता है (TIO लिंक देखें)।


पॉवरशेल , 48 बाइट्स

for(;$b-eq$a-and$args){$a,$b,$args=$args}$b-eq$a

इसे ऑनलाइन आज़माएं!

कोई पुनरावृत्ति , कोई रेगेक्स और कोई पाइप नहीं: डी। यह एक आकर्षक स्ट्रिंग के माध्यम से चार-सरणी के रूप में भी इनपुट लेता है। यह का उपयोग करता है $b-eq$aके बजाय $a-eq$bएक मामले के लिए जब एक पिछले चार # 0 कोड है।


4

पॉवरशेल , 64 59 बाइट्स

filter f($n){$a,$b,$r=$n;$a-eq$b-and$(if($r){f $r}else{1})}

इसे ऑनलाइन आज़माएं!

पुनरावर्ती कार्य, कोई रेगेक्स नहीं। इनपुट को char-अरे के रूप में लेता है (TIO लिंक देखें)। पहले दो तत्वों को छीलता है $aऔर $b, शेष में संग्रहीत करता है $r। यदि हमारे पास अभी भी तत्व शेष हैं, तो साथ में पुन: प्रयास करें $a -eq $b। नहीं तो बस जांच करो $a -eq $b। आउटपुट निहित है।

-5 बाइट्स mazzy के लिए धन्यवाद



1
@mazzy धन्यवाद! मैं $स्टेटमेंट ब्लॉक से पहले लापता था और यह पता नहीं लगा सका कि यह काम क्यों नहीं कर रहा था।
AdmBorkBork

4

जूलिया 1.0 , 25 बाइट्स

s->s[1:2:end]==s[2:2:end]

इसे ऑनलाइन आज़माएं!


3
इसके बजाय एक प्रतीक का उपयोग करना कम है f, जैसे !a=...। या एक अनाम फ़ंक्शन का उपयोग करने के लिए:s->...
H.PWiz

हाँ तुम सही हो। मैंने इसे ठीक किया
user3263164

4

जे , १३ ११ १० बाइट्स

-:2#_2{.\]

इसे ऑनलाइन आज़माएं!

-2 बाइट्स Adám को धन्यवाद

-1 बाइट मील के लिए धन्यवाद

TLDR स्पष्टीकरण: क्या इनपुट इनपुट के हर दूसरे वर्ण के समान है?



-:2#_2{.\]एक और बाइट बचाना चाहिए
मील

बहुत अच्छा, धन्यवाद @ मीलों
जोनाह

4

शेक्सपियर प्रोग्रामिंग लैंग्वेज , 204 156 बाइट्स

-48 बाइट्स जो किंग के लिए धन्यवाद (ज्यादातर आउटपुट विधि को बदलकर)

A.Ajax,.Puck,.Act I:.Scene I:.[Exeunt][Enter Ajax and Puck]Ajax:Open mind.Puck:Open
mind.Is I worse zero?If soSpeak thy.Is you as big as I?If soLet usAct I.

इसे ऑनलाइन आज़माएं!

यदि इनपुट डबल बोलता है, और चेतावनी के साथ त्रुटि से बाहर निकलता है यदि यह डबल स्पीक नहीं है (जिसे डिफ़ॉल्ट रूप से अनुमति है)।


4

केग , 19 17 अक्षर

?{!1<|=[|0.(_)]}1

स्पष्टीकरण:

?             # read input

{             # while
    !1<       # stack length greater than 1?
|             # end of while condition and beginning of while block
    =         # compare the 2 top values in the stack
    [         # if (the condition is the top of stack)
    |         # end of then block and beginning of else block
        0.    # output 0
        (_)   # clear stack (discard top of stack in for loop stack length times)
    ]         # end if
}             # end while

1             # stack is already empty, push a truthy value

              # implicitly output the stack content if there was no explicit output

इसे ऑनलाइन आज़माएं!


3

आर , 53 34 बाइट्स

-19 बाइट्स ग्यूसेप के लिए धन्यवाद

function(a)gsub("(.)\\1","",a)==""

इसे ऑनलाइन आज़माएं!


1
मुझे लगता gsub("(.)\\1","",a)==""है कि चाल भी चलेगी; कई अन्य एक ही regex का उपयोग करते हैं।
Giuseppe

@Giuseppe यह पूरी regex बात मेरे लिए बहुत नई है। धन्यवाद।
रॉबर्ट एस।

R + pryr आपको इस उत्तर से संशोधित 32- बाइट्स देता है ।
खुल्द्रेशेथ न'बैरिया

2
यदि इनपुट को एक वेक्टर के रूप में लिया जा सकता है, तो function(a)!sum(rle(a)$l%%2)28 के लिए
मिकटी

3

ब्रेन-फ्लैक , 26 , 22 बाइट्स

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

इसे ऑनलाइन आज़माएं!

झूठे के लिए आउटपुट 1 और सच के लिए 0।

पठनीय संस्करण:

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

मैं मूल रूप से यह था:

{
    ({}[{}])

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

जो अब 10 बाइट्स है।


क्या 0 / गैर 0 एक बूलियन के रूप में गिना जाता है? यदि हां, तो आप कर सकते हैं({({}[{}]){{}}{}})
रिले

3
"पठनीय संस्करण" पर योग्य - इसका इतना पठनीय: पी
क्विन

@ क्राइली नहीं, यह मान्य नहीं है। हालांकि, मुझे एक बेहतर चाल मिली।
DJMcMayhem

@quinn मेरे लिए पठनीय लग रहा है: पी
DJMcMayhem

3

QuadR , 11 बाइट्स

''≡⍵
(.)\1

इसे ऑनलाइन आज़माएं!

''≡⍵ परिणाम एक खाली स्ट्रिंग है जब

(.)\1 एक चरित्र खुद के द्वारा पीछा किया

 कुछ भी नहीं द्वारा प्रतिस्थापित किया गया है


3

जावास्क्रिप्ट, २६ २३ बाइट्स

s=>/^((.)\2)+$/.test(s)

इसे ऑनलाइन आज़माएं!

पुनरावर्ती समाधान, 30 बाइट्स

0 बाइट्स की लागत पर एक फिक्स के लिए अरनौलड को धन्यवाद।

f=([x,y,...s])=>x?x==y&f(s):!y

इसे ऑनलाइन आज़माएं!



धन्यवाद, @ अरनल्ड :)
झबरा

@ ओलिवर, बकवास; मेरा पोस्ट करने से पहले केवल अपना मूल समाधान देखा। यदि आप मुझसे पहले उस 23 को मिल गए, तो मुझे 26 को वापस करने की खुशी है - मुझे बताएं।
झबरा


3

Zsh , 36 बाइट्स

पिछली चुनौती का मेरा ज़ीश जवाब यहाँ पाया जा सकता है।

सच बोलता है (0) अगर डबल नहीं बोलता है, और झूठा (1) अगर डबल बोलता है। (जैसा टिप्पणी में अनुमति दी गई है।)

for a b (${(s::)1})r+=${a#$b}
[ $r ]

for a b (${(s::)1})r+=${a#$b}
         ${(s::)1}             # split $1 characterwise
for a b (         )            # take pairs of characters from ${(s::)1}, assign to $a and $b
                      ${a   }  # first character
                      ${ #$b}  # remove second character as prefix
                   r+=         # append to $r as string
[ $r ]                         # exit truthy if $r is non-empty

इसे ऑनलाइन आज़माएं!


3

प्रोलोग (एसडब्ल्यूआई) , 60 45 बाइट्स

असंबंधित स्ट्रिंग के लिए धन्यवाद

+[].
+[A,A|T]:- +T.
-X:-string_chars(X,Y),+Y.

इसे ऑनलाइन आज़माएं!

इसे स्ट्रिंग से परमाणुओं की सूची में परिवर्तित करने से स्कोर बर्बाद हो जाता है, लेकिन अच्छी तरह से ।।



1
... ऐसा लगता है कि आप atom_charsइसके बजाय भी उपयोग कर सकते हैं string_chars, भले ही आप इनपुट के रूप में एक स्ट्रिंग ले रहे हों, और परमाणु नहीं। लेकिन यह अप्रासंगिक हो सकता है यदि आप एक बैकटिक-सीमांकित स्ट्रिंग ले सकते हैं - अर्थात, चार कोड की एक सूची।
असंबंधित स्ट्रिंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.