बिट-वार उलटने के लिए सबसे छोटा कोड एक बाइनरी स्ट्रिंग है


79

मुझे लगता है कि यहां पर बहुत आसान सवाल नहीं हैं जो शुरुआती प्रयास कर सकते हैं!

चुनौती: 1 और 0 के यादृच्छिक इनपुट स्ट्रिंग को देखते हुए जैसे:

10101110101010010100010001010110101001010

सबसे छोटा कोड लिखें जो बिट-वार प्रतिलोम को आउटपुट करता है जैसे:

01010001010101101011101110101001010110101

जवाबों:


88

जे, 5 बाइट्स

मान लें कि इनपुट स्ट्रिंग चर में है b

b='0'

यह वह नहीं करता है जो ज्यादातर भाषाओं में करता है ...

J तुलना ऑपरेटर सिर्फ =( =:और =.क्रमशः वैश्विक और स्थानीय असाइनमेंट हैं)। हालांकि, =सामान्य ==ऑपरेटर की तरह काम नहीं करता है : यह आइटम-दर-आइटम की तुलना करता है। ध्यान रखें कि इस तरह एक सरणी बनाई जाती है 0 2 3 2 3 1 2 3 4:। उदाहरण के लिए 2 = 0 2 3 2 3 1 2 3 4देता 0 1 0 1 0 0 1 0 0है। यह एक स्ट्रिंग के लिए समान है: 'a'='abcadcadda'केवल वापस नहीं 0आता है, यह रिटर्न करता है 1 0 0 1 0 0 1 0 0 1(इसका मतलब के 0साथ एक्सट्रपलेशन किया जा सकता है */, जो मूल रूप से होता है all।) इस मामले में, हालांकि, यह व्यवहार उत्कृष्ट है, क्योंकि हम लोगों और शून्य का एक स्ट्रिंग चाहते हैं, या सच्ची और झूठी। चूँकि J के बूल हैं 1 और 0, इसके परिणामस्वरूप सरणी होती है 1और0की (वे तार नहीं हैं, और इसके अलावा अन्य हर चरित्र 1भी 0इस सरणी में परिणाम होगा ।) यह मुद्रण की जरूरत नहीं है: जम्मू स्वचालित रूप से एक अभिव्यक्ति का परिणाम प्रिंट करता है। मुझे उम्मीद है कि यह पर्याप्त स्पष्टीकरण था, यदि नहीं, तो कृपया कुछ ऐसा पूछें जो टिप्पणियों में अभी तक स्पष्ट नहीं है। यह उत्तर भी हो सकता है '0'&=(या =&'0'), लेकिन मुझे लगा कि b='0'यह स्पष्ट था।


1
मैंने जे की कोशिश की है। मैं अपने दिमाग को इसमें नहीं झुका सकता। लगता है कि मुझे अच्छे डॉक्स नहीं मिले हैं। यहाँ, पागल होने के लिए एक +1 है।
देखिए

1
और यह कारण है कि मैं जे का उपयोग कभी नहीं होगा
हड़बड़िया

2
@Qix जे के रूप में अपठनीय है, यह वास्तव में मेरे लिए समझ में आता है, और अन्य भाषाएं जिनमें ऑपरेटर हैं जो एक वेक्टर एलएचएस लेते हैं और एक स्केल आरएचएस समान व्यवहार करते हैं।
hvd

1
क्या? यह सही परिणाम नहीं लौटाता है, क्या यह? परिणाम एक पाठ स्ट्रिंग (रिक्त स्थान के बिना) होना चाहिए था, लेकिन J के मेरे सीमित ज्ञान के साथ, मुझे लगता है कि यह एक बूलियन सूची को 0 1 0 1 0 के डिस्प्ले फॉर्म के साथ
लौटाएगा

4
इसकी अनुमति नहीं है क्योंकि आप यह नहीं मान सकते हैं कि इनपुट एक निश्चित चर में संग्रहीत है। =&'0'समान बाइट्स के लिए काम करता है।
२१ पर फल

43

GolfScript , 5 बाइट्स

{1^}%

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

यह काम किस प्रकार करता है

  • GolfScript एसटीडीआईएन से पूरे इनपुट को पढ़ता है और इसे स्टैक पर स्ट्रिंग के रूप में रखता है।

  • {}% स्ट्रिंग में सभी वर्णों के माध्यम से जाता है और उन सभी के लिए कोड ब्लॉक निष्पादित करता है।

  • 1^ 1. "0" के साथ ASCII कोड के अनन्य OR वर्णों की गणना करता है और ASCII कोड 48, "1" से ASCII कोड 49 से मेल खाता है।

    के बाद से 48 ^ 1 = 49और 49 ^ 1 = 48, इस 0 के बदल जाता है 0 के में 1 है और 1 के में।

  • एक बार समाप्त होने के बाद, गोल्फस्क्रिप्ट संशोधित स्ट्रिंग को प्रिंट करता है।


6
रुको, गोल्फस्क्रिप्ट ?
तूनएल्फ्रिंक

मैंने आपके सवाल का गलत मतलब निकाला था। अब तय हो गया।
डेनिस

1
@tolos: मैंने अपना उत्तर संपादित किया है।
डेनिस

5
@ToonAlfrink गोल्फस्क्रिप्ट जैसी गोल्फिंग भाषाओं को सभी चुनौतियों में स्वीकार किया जाता है, जब तक कि वे 'सामान्य-उद्देश्य' हैं, जिसका अर्थ है कि वे विशिष्ट चुनौतियों के लिए डिज़ाइन नहीं की गई हैं।
किताकार २२

4
@ kitcar2000 मुझे लगता है कि वह और अधिक आश्चर्यचकित थे कि ऐसी भाषा का अस्तित्व था, बजाय किसी को गोल्फ के एक कोड गोल्फ प्रश्न में उपयोग करने का साहस;)
क्रिस Cirefice

35

CJam - 4

q1f^

इस Xor के हर चरित्र के साथ 1.
अन्य CJam उत्तर के विपरीत, मुझे नहीं लगता कि इनपुट पहले से ही स्टैक पर है।

इसे http://cjam.aditsu.net/ पर आज़माएं


2
तो है कि आप कैसे उपयोग f
डेनिस

@ डेनिस जानकारी। आप
bf से

30

डॉस पर x86 मशीन कोड - 14 13 11 बाइट्स

खैर, यह फिर से कम हो गया! एक असंबंधित चुनौती के लिए एक समाधान लिखने के बाद , मैंने देखा कि एक ही चाल यहाँ भी लागू की जा सकती है। तो अब हम शुरू करें:

00000000  b4 08 cd 21 35 01 0a 86  c2 eb f7                 |...!5......|
0000000b

टिप्पणी विधानसभा:

    org 100h

section .text

start:
    mov ah,8        ; start with "read character with no echo"
lop:
    ; this loop runs twice per character read; first with ah=8,
    ; so "read character with no echo", then with ah=2, so
    ; "write character"; the switch is performed by the xor below
    int 21h         ; perform syscall
    ; ah is the syscall number; xor with 0x0a changes 8 to 2 and
    ; viceversa (so, switch read <=> write)
    ; al is the read character (when we did read); xor the low
    ; bit to change 0 to 1 and reverse
    xor ax,0x0a01
    mov dl,al       ; put the read (and inverted character) in dl,
                    ; where syscall 2 looks for the character to print
    jmp lop         ; loop

पिछला समाधान - 13 बाइट्स

मुझे लगता है कि यह इससे ज्यादा छोटा नहीं है।असल में, यह किया! @Ninjalj का शुक्रिया एक और बाइट बंद करने के लिए।

00000000  b4 08 cd 21 34 01 92 b4  02 cd 21 eb f3           |...!4.....!..|
0000000d

इस संस्करण में उन्नत इंटरएक्टिविटी ™ की विशेषता है - इसे कमांड लाइन से चलाने के बाद, यह "उल्टे" वर्णों को तब तक बाहर निकालता है जब तक आप इनपुट अंक लिखते हैं (जो कि गूंज नहीं हैं); बाहर निकलने के लिए, बस एक Ctrl-C करें।

पिछले समाधान के विपरीत, इसमें DosBox में चलने में कुछ परेशानी है - चूंकि DosBox Ctrl-C को सही ढंग से समर्थन नहीं करता है , यदि आप बाहर निकलना चाहते हैं तो आपको DosBox विंडो को बंद करने के लिए मजबूर किया जाता है। VM में DOS 6.0 के साथ, इसके बजाय, यह इच्छानुसार चलता है।

NASM स्रोत:

org 100h

section .text

start:
    mov ah,8
    int 21h
    xor al,1
    xchg dx,ax
    mov ah,2
    int 21h
    jmp start

पुराना समाधान - 27 25 22 बाइट्स

इसने कमांड लाइन से इसके इनपुट को स्वीकार किया; DosBox में .COM फ़ाइल के रूप में आसानी से चलता है।

00000000  bb 01 00 b4 02 8a 97 81  00 80 f2 01 cd 21 43 3a  |.............!C:|
00000010  1e 80 00 7c f0 c3                                 |...|..|

NASM इनपुट:

    org 100h

section .text

start:
    mov bx, 1
    mov ah, 2
loop:
    mov dl, byte[bx+81h]
    xor dl, 1
    int 21h
    inc bx
    cmp bl, byte[80h]
    jl loop
exit:
    ret

2
+1 कोड के लिए शायद कई समझ में नहीं आते हैं।

1
xchg dx,ax1 बाइट से कम हैmov dl,al
नवजाल

@njjalj: वाह, धन्यवाद! यह था सब के बाद कम मिलता है!
इटालिया

26

बैश + कोरुटिल्स, 8 बाइट्स

tr 01 10

STDIN से इनपुट लेता है।


या

sed, 8 बाइट्स

y/01/10/

2
मैंने हाल ही में बैश github.com/professorfish/bash-shelf के लिए एक गोल्फ लाइब्रेरी / उर्फ ​​सेट बनाया । आप उस के साथ एक char को शेव कर सकते हैं:y 01 10

1
BASH यहाँ कहाँ शामिल है? BASH विशिष्ट क्या है? हर शेल कॉल कर सकते हैं tr...
यति

1
@yeti हर शेल बश या zsh की तरह कमांड नहीं करता है। कुछ गोले में जो कोड अकेले एक वाक्यविन्यास त्रुटि है
mniip

5
शायद यह मान लेना सुरक्षित है कि "शेल" का अर्थ है "POSIX- संगत शेल" यहां ...
फायरफली

@professorfish तुम एक चार से दाढ़ी, लेकिन फिर समारोह में शामिल करके 48 जोड़ें। यह कैसे एक जीत है?
स्टीवन पेनी

20

CJam , 4 बाइट्स

:~:!

माना जाता है कि मूल स्ट्रिंग पहले से ही स्टैक पर है। संशोधित स्ट्रिंग प्रिंट करता है।

निम्नलिखित कोड चिपकाकर इसे ऑनलाइन आज़माएं :

"10101110101010010100010001010110101001010":~:!

यह काम किस प्रकार करता है

  • :~स्ट्रिंग के प्रत्येक वर्ण का मूल्यांकन करता है, अर्थात, यह वर्ण 0 को पूर्णांक 0 से बदलता है ।

  • :!प्रत्येक पूर्णांक की तार्किक संख्या की गणना करता है। यह 0 में 1 का और 1 का 0 में बदल जाता है।


19

ब्रेनफक ( 70 71)

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

स्पष्टीकरण:

>,[>,]                       Read characters until there are none left.
<[<]                         Return to start
>[<                          Loop as long as there are characters to invert
  +++++++[>-------<-]        Subtract 49 (ASCII value of 1)
  >[++<]                     If not 0, add 2
  +++[<++++>-]<[>>++++<<-]>> Add 48
  .                          Print
  [-]                        Set current cell to 0
>]                           Loop

1
+++++++++ [<++++++> -] 48 के लिए ऐसा क्यों नहीं? 8 * 6 बनाम 4 * 4 * 3
क्रंचर

@ क्रंचर जोड़ा गया।
किटकार्न २२

ज्यादा समय क्यों लगा? क्या यह "बग फिक्सिंग" के कारण है?
क्रंचर

1
@Cruncher हाँ, मैं एक बग जहां यह उत्पादन होगा ठीक करने के लिए किया था aके लिए 11
किटकार २२


11

पैनकेक स्टैक , 532 बाइट्स

Put this tasty pancake on top!
[]
Put this delicious pancake on top!
[#]
Put this  pancake on top!
How about a hotcake?
If the pancake is tasty, go over to "#".
Eat all of the pancakes!
Put this supercalifragilisticexpialidociouseventhoughtheso pancake on top!
Flip the pancakes on top!
Take from the top pancakes!
Flip the pancakes on top!
Take from the top pancakes!
Put this supercalifragilisticexpialidociouseventhoughthes pancake on top!
Put the top pancakes together!
Show me a pancake!
If the pancake is tasty, go over to "".

यह मानता है कि इनपुट एक अशक्त चरित्र द्वारा समाप्त हो गया है। रणनीति इस प्रकार है:

  • इनपुट का पात्र लें
  • इससे एससीआई मूल्य घटाएं 1
  • उस से घटाएँ 0( 1अगर हमारे पास था 0, या 0अगर हमारे पास था 1)
  • की ascii मूल्य जोड़े 0इसे करने के लिए
  • छपा लो।
  • दोहराना

10

C: 29

i(char*s){*s^=*s?i(s+1),1:0;}

इसे यहाँ ऑनलाइन आज़माएँ ।

XOR चाल, डेनिस को इंगित करने के लिए धन्यवाद।


8
सरल और छोटा:i(char*s){while(*s)*s++^=1;}
edc65

1
धन्यवाद, @ edc65! मैं इसका उपयोग नहीं करने जा रहा हूं, हालांकि, यह पुनरावृत्ति के बजाय पुनरावृत्ति समाधान है। मैं इसका श्रेय नहीं लेना चाहूंगा। यह ध्यान देने योग्य है कि 28 अक्षरों की लंबाई के एक परिणाम के whileसाथ अपने को प्रतिस्थापित करना for
सहस्राब्दी

6
जैसा आप चाहें। एक पुनरावर्ती समाधान का अनुरोध नहीं किया गया है, और मेरी राय में, किसी भी समय यह कब्ज़दार है, पुनरावृत्ति वाला समाधान पुनरावर्ती की तुलना में बेहतर है। मज़े में इस पुनरावर्ती कॉल को 10k स्ट्रिंग पर लागू करें।
edc65

1
चूंकि पिछले एक को छोड़कर हर कॉल एक पूंछ पुनरावर्ती कॉल है, इसलिए मैं शर्त लगाता हूं कि स्टैक फ्रेम को फिर से उपयोग करने के लिए एक कंपाइलर इसे लूप में बदल देगा।
मिलन

1
@millinon सबूत!
de002392

9

अजगर 2.7 - 34 *

ओह यह कितना पहला चूसता है। बहुत बदसूरत, यह एक है। 63 वर्ण।

print''.join([bin(~0)[3:] if x == '0' else bin(~1)[4:] for x in ''])

यह एक सा बेहतर है लेकिन फिर भी यह कल्पना नहीं है। 44 चरस।

print''.join([str(int(not(int(x)))) for x in ''])

के बाद से int(x) and 1रिटर्न int(x)अगर यह 0 और नहीं तो झूठी नहीं है। समाधान को 36 वर्णों तक कम किया जा सकता है।

print''.join([str(1-int(x)) for x in ''])

चूंकि join()एक जनरेटर लेता है कोष्ठक हटाया जा सकता है। 32 चरस।

print''.join(str(1-int(x))for x in'')

और इसके बजाय बैकटिक्स का उपयोग किया जा सकता है str()

print''.join(`1-int(x)`for x in'')

@TheRare से पॉइंटर्स के लिए 34 धन्यवाद से कम 44

bin(-int)-0bxxx के ऊपर से रिटर्न के बाद से किसी के पूरक का पता लगाना मुश्किल है ।


2
Ya'know,(int(x) and 1) == int(x)
jqu

@ मुझे पता नहीं था, इसके लिए धन्यवाद :)
बासम

1
रिकॉर्ड के लिए: शून्य गलत है और नॉनज़रो सच है। किसी भी तरह के अनुक्रम (सूची, स्ट्रिंग ...) के लिए एक ही नियम लागू होता है, लेकिन यह अनुक्रम की लंबाई से जांचा जाता है। इस प्रकार '' == Falseऔर'hi' == True
seequ

1
लगता है जैसे आप कुछ रिक्त स्थान से चूक गए। इसके अलावा, रीप्रिट () को बदलने के लिए बैकटिक्स का उपयोग किया जा सकता है। ''.join(`1-int(x)`for x in'')
देखिए

1
repr(x)फि < , x <अधिकतम के लिए समान हैstr(x)
12

7

पर्ल, 9 अक्षर

'y/10/01/'

9 वां वर्ण 'p' ध्वज है

उपयोग:

$ echo '10101001' | perl -pe 'y/10/01/'

2
यह एक सेड स्क्रिप्ट के रूप में भी काम करता है, y/10/01/लेकिन एक चार छोटा क्योंकि इसे किसी भी झंडे की जरूरत नहीं है

4
आपको यहां एकल उद्धरण की आवश्यकता नहीं है।
कोनराड बोरोस्की

7

जावास्क्रिप्ट ( ईएस 6 ) 36

alert(prompt().replace(/./g,x=>x^1))

इनपुट मानते हुए s, s.replace(/./g,x=>x^1)22 वर्ण हैं।
ओरिऑल

2
मुझे वास्तव में आउटपुट और इनपुट पसंद है।
अंडरस्कोर

@nderscore Save 2 चार्ट:p=prompt(p().replace(/./g,x=>x^1))
गौरांग टंडन

@GaurangTandon होना होगा (p=prompt)(p().replace(/./g,x=>x^1))और यही लंबाई होगी।
अंडरस्कोर

@nderscore मैंने भी इसे उसी तरह से सोचा था, लेकिन इसने बिना कोष्ठक के भी काम किया, अजीब तरह से।
गौरांग टंडन

7

भूलभुलैया , 6 बाइट्स

(भूलभुलैया इस चुनौती से नया है, इसलिए यह जवाब प्रतिस्पर्धा नहीं करता है - ऐसा नहीं है कि यह वैसे भी जीत रहा है ...)

1,
.$@

यह कोड मानता है कि STDIN में केवल अंक होते हैं (विशेष रूप से, कोई अनुगामी न्यूलाइन नहीं)।

निर्देश पॉइंटर (IP) दाएं से बाएं बाएं कोने में शुरू होता है। जबकि पढ़ने के लिए अंक हैं यह बाएं हाथ 2x2 ब्लॉक के माध्यम से एक तंग लूप में चक्र होगा: 11 धक्का, ,एक अंक पढ़ें, $XOR इसे 1 के साथ अंतिम बिट टॉगल करें, .परिणाम प्रिंट करें। आईपी ​​इस लूप को लेता है क्योंकि XOR के बाद स्टैक का शीर्ष सकारात्मक होता है, जैसे कि यह एक दाहिना-मोड़ लेगा। जब हम ईओएफ से टकराते हैं, तो बदले में ,लौटते -1हैं। तब XOR उपज देगा -2और इस ऋणात्मक मान के साथ आईपी एक बाएं-मुड़ता है @और प्रोग्राम समाप्त होता है।

यह समाधान Labyrinth के लिए इष्टतम किया जाना चाहिए: आप की जरूरत ,है और .एक आई / ओ पाश के लिए और @कार्यक्रम समाप्त करने के लिए। अंतिम बिट को टॉगल करने के लिए आपको कम से कम दो वर्ण (यहां 1और $) चाहिए। और आपको लूप के लिए कम से कम एक न्यूलाइन की आवश्यकता होती है जिसे समाप्त किया जा सकता है।

जब तक ... अगर हम STDERR को नजरअंदाज करते हैं, यानी एक त्रुटि के साथ समाप्त करने की अनुमति दें तो हम बचा सकते हैं @और हमें दो रास्तों के बीच स्विच करने के लिए किसी भी तरह की आवश्यकता नहीं है। हम केवल तब तक पढ़ते और छपाई करते रहते हैं जब तक कि हम गलती से एक नकारात्मक मान ( -2) को मुद्रित करने का प्रयास नहीं करते । यह कम से कम दो 5-बाइट समाधान के लिए अनुमति देता है:

1,
.$
,_1$.


5

ट्यूरिंग मशीन कोड, 32 बाइट्स (1 राज्य - 3 रंग)

इस ऑनलाइन टीएम सिम्युलेटर द्वारा आवश्यक नियम तालिका सिंटैक्स का उपयोग करना कुछ महीने पहले मैंने अपने गूगोलॉजी विकी यूजर ब्लॉग पर किए गए पोस्ट से उधार लिया था।

0 0 1 r *
0 1 0 r *
0 _ _ * halt

आप इस जावा कार्यान्वयन का उपयोग करके इसका परीक्षण भी कर सकते हैं


4

पायथन 2.x - 44 बाइट्स

print''.join(`1-int(x)`for x in raw_input())

इसे जटिल क्यों बनाते हैं, या कुछ धोखा देने योग्य चर का उपयोग करते हैं?


इसके कुछ अतिरिक्त वर्णों को सहेजना संभव है print''.join('1-int(x)'for x in'input()'):। मैं टिप्पणी कोड में backticks नहीं मिल सकता है इसलिए उन्हें 'द्वारा प्रतिस्थापित किया।
विलेम

@willem भविष्य में संदर्भ के लिए, आप उन्हें एक बैकस्लैश के साथ बच सकते हैं: `a\`b`-> a`b
nyuszika7h

@willem 0 या इनपुट से शुरू होने वाले इनपुट के लिए काम नहीं करता है जो कि अधिकतम (बेस 10 में) से बड़ा है।
देखिए

धन्यवाद @ nyuszika7h और उन मामलों के बारे में नहीं सोचा था। इसलिए आपका समाधान अच्छा है
विल्म

@willem इस तरह से सामान के बारे में भूलना आसान है। :)
देखिए

4

आर, 27 वर्ण

chartr("01","10",scan(,""))

उपयोग:

> chartr("01","10",scan(,""))
1: 10101110101010010100010001010110101001010
2: 
Read 1 item
[1] "01010001010101101011101110101001010110101"

4

एपीएल (Dyalog यूनिकोड) , 7 बाइट्स SBCS

पूरा कार्यक्रम। संकेत देता है।

∊⍕¨~⍎¨⍞

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

 शीघ्र

⍎¨ प्रत्येक चरित्र को निष्पादित करें

~ तार्किक नहीं

⍕¨ प्रत्येक वर्ण को पाठ के रूप में प्रारूपित करें

ϵ nlist (समतल)



3

टीआई-बेसिक, 7 बाइट्स

यह एक फ़ंक्शन है जो Ansइनपुट के रूप में एक बाइनरी स्ट्रिंग (के माध्यम से ) लेता है और आउटपुट को उलटा (उलटा नहीं) स्ट्रिंग के रूप में निर्दिष्ट के रूप में वापस करता है। अधिक मदद के लिए, आप not(TI-BASIC wiki पर सूची आवेदन के माध्यम से पढ़ सकते हैं । मैं संकलित संस्करण का उपयोग कर रहा हूं क्योंकि यह छोटा है:

»*r>Õ¸r

हेक्स में:

BB 2A 72 3E D5 B8 72

व्याख्या

»*r - फ़ंक्शन इनपुट को स्ट्रिंग के रूप में लें और सूची में बदलें

> - अगले ऑपरेटरों को सूची दी गई पाइप

Õ¸r - सूची का उलटा लौटाएं


के अंत में रिक्त स्थान के सभी क्या हैं »*r>Õ¸r ?
किटकार्नेक्स २२

@ kitcar2000 उफ़, मुझे उसके बाद HEX हुआ करता था। लेकिन मैं इसे स्थानांतरित करने के बाद, मैं रिक्त स्थान को दूर करना भूल गया ... मैंने इसे अभी किया है।
टिमटेक

यह नोट करने के लिए उपयोगी होना चाहिए कि: 1. कैलकुलेटर पर यह प्रदर्शित होता है expr(Ans:Returnnot(Ans; 2. क्योंकि स्ट्रिंग कॉमा से अलग नहीं होती है, और यह ए से शुरू नहीं होती है {, यह 1000010011 जैसे एक पूर्णांक को विकसित करेगी, सूची नहीं; 3. Returnआपके द्वारा लिखे गए तरीके से काम नहीं करता है; 4. यह एक सूची के रूप में आउटपुट देता है, न कि एक स्ट्रिंग।
lirtosiast

3

हास्केल, 22 बाइट्स

map(\c->"10"!!read[c])

मैं इस चुनौती के हास्केल समाधानों की कमी से हैरान था, इसलिए यहां एक है। यह एक फ़ंक्शन का मूल्यांकन करता है जो एक स्ट्रिंग लेता है और इसका उलटा लौटाता है।

व्याख्या

यहां कुछ भी नहीं फैंसी।

map(\c->             )  -- For each character c in the input string:
                  [c]   -- wrap c into a string,
              read      -- convert to integer,
        "10"!!          -- and index the string "10" with it.

3

बेफुज 93, 25 बाइट्स

0>~1+:#v_$>:#,_@
 ^   -1<

खाली स्टैक और ईओएफ दोनों को पढ़कर मान लें -1।

0 शून्य टर्मिनेटर के रूप में एक \ 0 धक्का देता है

>~1+:#v_ एक इनपुट लूप है, यह ascii पढ़ता है, 1 जोड़ता है, EOF + 1 = 0 के लिए चेक,

^ -1< अन्यथा 1 घटाता है और स्टैक पर धकेल दिया गया एस्की मूल्य छोड़ देता है।

$>:#,_@ स्टैक के शीर्ष पर शून्य की अतिरिक्त कॉपी को गिराता है, फिर बाइनरी स्ट्रिंग को ऊपर से नीचे की ओर प्रिंट करता है

यदि खाली स्टैक 0 पढ़ता है, तो 2 बाइट्स के साथ सहेजें

>~:1+#v_$>:#,_@
^   -1<

यदि EOF = 0 है, तो इसी एल्गोरिथ्म का उपयोग करके लगभग 15 बाइट्स का एक संस्करण संभव है, लेकिन मेरे पास परीक्षण के लिए ऐसा कार्यान्वयन काम नहीं है।


3

जावास्क्रिप्ट ईएस 6, 26 वर्ण

s=>s.replace(/\d/g,x=>x^1)

3
Why / \ d / g not /./g
l4m2


2

पायथन 3, 39

मेथिंक्स पायथन इसके लिए सबसे अच्छी भाषा नहीं है। :)

for i in input():print(1-int(i),end='')

यदि आप आउटपुट के बाद एक नई लाइन होने की परवाह करते हैं, तो यहां एक 43-वर्ण विकल्प है:

print(''.join("01"[i<"1"]for i in input()))

कोड end=''सिर्फ एक के बिना काम ,करेगा :) - जब तक आप कोई जगह नहीं होने के बारे में परवाह करते हैं
हैरी बीडल

@BritishColour, नहीं, वह पायथन 2 है। पायथन 3 के printफ़ंक्शन को endप्रत्येक प्रिंट के अंत में एक नई रेखा को दबाने के लिए पैरामीटर को ट्विक करने की आवश्यकता होती है । इसके अलावा, ओपी के विनिर्देश के अनुसार, मुझे लगता है कि मैं इस बारे में परवाह करता हूं कि कोई स्थान नहीं है। :) टिप्पणी के लिए धन्यवाद, हालांकि!
DLosc

ओ, कूल, मुझे नहीं पता था कि! मैं मुख्य रूप
हैरी बीडल

2

जे - 11 वर्ण

J में बूलियन मान को पूर्णांक के रूप में दर्शाया जाता है 0और 1, निश्चित रूप से सरणियों में मान्य सूचक भी हैं (इस मामले में, 2-वर्ण सरणी '01')

'01'{~'0'&=

मुझे लगता है कि यह उत्तर तकनीकी रूप से शीर्ष J उत्तर की तुलना में अधिक सही है, जो स्ट्रिंग के बजाय बूलियन सरणी को आउटपुट करता है।
गर

जब मैंने पोस्ट किया तो मुझे वास्तव में टॉप-रैंक जे समाधान नज़र नहीं आया (मुझे नहीं पता कि मैं कैसे चूक गया, लेकिन मैंने किया)। उस समाधान के लिए उचित होने के लिए, यह स्पष्ट रूप से कहता है "यह वह नहीं करता है जो अन्य समाधान करते हैं"। BTW, 11 वर्णों में इस (शाब्दिक आउटपुट) समाधान को व्यक्त करने का एक और तरीका है: [:, ": @ = & '0 0'। '
डैन ब्रॉन

नमस्ते, एक और कोड के लिए धन्यवाद! मैं आप लोगों से अधिक J सीख रहा हूँ। उस कथन के बारे में, मुझे लगता है कि वह समान संकेत का उल्लेख कर रहा था, कि यह असाइनमेंट के बजाय प्रत्येक आइटम की तुलना करता है।
गर

2

सी #, 131 बाइट्स

पार्टी में थोड़ी देर हो गई, लेकिन यहां मेरा है। :)

using System;class R{static void Main(string[]a){foreach(var v in a[0].ToCharArray()){Console.Write(int.Parse(v.ToString())^1);}}}

2

MATLAB, 13 बाइट्स

@(x)[97-x '']

ऊपर चलाने के बाद, उल्टे तार को प्राप्त करने के लिए बस अपने इनपुट स्ट्रिंग के साथ फ़ंक्शन को कॉल करें। उदाहरण के लिए चल रहा है:

ans('10101110101010010100010001010110101001010')

प्रिंट:

01010001010101101011101110101001010110101

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.