বিপরীত ও উল্টানো একটি স্ট্রিং


27

বিপরীত ও উল্টানো একটি স্ট্রিং

চ্যালেঞ্জ

এই চ্যালেঞ্জের মধ্যে। আপনি এমন একটি প্রোগ্রাম লিখবেন যা ইনপুট আউটপুট দেয় বা ফিরে আসবে, বিপরীত হবে এবং বিপরীত হবে।

প্রথমত, প্রতিটি অক্ষরকে তার অক্ষর কোডে রূপান্তর করা উচিত। তারপরে, এটি বেস -২ তে রূপান্তর করা উচিত। অনুসরণ করে, সেই স্ট্রিংটি বিপরীত হওয়া উচিত। এর পরে, স্ট্রিংটি উল্টানো উচিত (1 -> 0 এবং 0 -> 1)। অবশেষে, এটি আবার বেস 2 এ রূপান্তরিত হওয়া উচিত এবং তারপরে একটি অক্ষরে ফিরে যেতে হবে। যদি কোনও অক্ষর ফলহীন অবস্থায় থাকে তবে আপনি youচ্ছিকভাবে এটি আউটপুট দিতে পারেন তবে সেগুলি অপসারণ করতে হবে না।

H -> 72  -> 1001000 -> 0001001 -> 1110110 -> 118 -> v
e -> 101 -> 1100101 -> 1010011 -> 0101100 -> 44  -> ,
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
o -> 111 -> 1101111 -> 1111011 -> 0000100 -> 4   -> (unprintable)
, -> 44  -> 101100  -> 001101  -> 110010  -> 50  -> 2
  -> 32  -> 100000  -> 000001  -> 111110  -> 62  -> >
W -> 87  -> 1010111 -> 1110101 -> 0001010 -> 10  -> (newline)
o -> 111 -> 1101111 -> 1111011 -> 0000100 -> 4   -> (unprintable)
r -> 114 -> 1110010 -> 0100111 -> 1011000 -> 88  -> X
l -> 108 -> 1101100 -> 0011011 -> 1100100 -> 100 -> d
d -> 100 -> 1100100 -> 0010011 -> 1101100 -> 108 -> l
! -> 33  -> 100001  -> 100001  -> 011110  -> 30  -> (unprintable)

স্কোরিং

বাইটস মধ্যে সংক্ষিপ্ত কোড।

-15% বোনাস: যদি আপনার প্রোগ্রামটি আউটপুট থেকে আন-প্রিন্টেবলগুলি সরিয়ে দেয়। নিউজলাইনগুলি বাদ দিয়ে এটি অবশ্যই কমপক্ষে সমস্ত অক্ষরের 32 টি হওয়া উচিত (10 নম্বর )


আমাকে আমার সিম্প্লেক্স দোভাষীটি আবার কাজ করতে হবে এক্সডিGBktnkZs
কনর ওব্রায়ান

সুতরাং স্ট্রিংয়ের অক্ষরগুলি বিপরীত হয় না, তবে প্রতিটি চরিত্রের বিটগুলি হয়?
xnor

কেবল নিশ্চিত হওয়া: 0010000 এর জন্য বিটটি 0000100 বা 00001 বিপরীত হয়?
ডিজিটাল ট্রমা


2
আমরা কি কেবলমাত্র ASCII (আপনার উদাহরণ হিসাবে) ধরে নিতে পারি, বা আমার ভাষার একটি চরিত্র যা আছে তার জন্য এই কাজ করা উচিত? (এছাড়াও, কোনও ভাষা যদি আলাদা বর্ণের কোড ব্যবহার করে তবে আমি কি এএসসিআইআই / ইউনিকোডের পরিবর্তে এটি ব্যবহার করব)?
পাওলো ইবারম্যান

উত্তর:


4

সিজেম, ১৪

q{i2bW%:!2bc}%

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

ব্যাখ্যা:

অনেকটাই অকপট:

q       read input
{…}%    convert each character
  i     convert to number
  2b    convert to base 2 (digit array)
  W%    reverse
  :!    invert each digit
  2b    convert from base 2
  c     convert to character

"মুদ্রণযোগ্য" সংস্করণ, 20 - 15% = 17

q{i2bW%:!2bc' ,N--}%

ডাঙিত, তুমি। আমি কেবল একটি সিজেএম উত্তর ডি পোস্ট করতে যাচ্ছিলাম ডি:
quওসকুইরেল

@anOKsquirrel দুঃখিত - এটি কি একই রকম ছিল?
অ্যাডিটসু

আমি যদি এটি শেষ করতাম তবে তা হত।
anOKsquirrel

ডাব্লু% কীভাবে কাজ করে? ডাব্লু -১, তাই ...
anOKsquirrel

1
@ এওকেস্কুইরিল এখানে
অ্যাডিতসু

9

পাইথ, 14 বাইট

smCi!M_jCd2 2z

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

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

 m           z  Map over the input with lambda d:
        Cd        Cast d to character.
       j  2       Convert to base 2.
      _           Reverse the resulting array.
    !M            Mapped logical NOT.
   i        2     Convert back to integer.
  C               Cast to character.
s               Concatenate the resulting characters.

2
বিকল্প সমাধান (সমস্ত 14 বাইট):smCi!MvM_.Bd2z smCi.r_.Bd`T2z smCiqR\0_.Bd2z
ডেনিস

তুলনা করার জন্য / কেবল আগ্রহের বাইরে / অপ্রিন্টেবলগুলি সরিয়ে এমন কোনও সংস্করণ সম্পর্কে কী বলা যায়? সম্ভবত পৃথক উত্তর হিসাবে।
হাইড

8

পার্ল, 57 টি অক্ষর

(50 টি অক্ষরের কোড + 1 অক্ষর কমান্ড-লাইন বিকল্প)

s/./$_=unpack b8,$&;s|0+$||;"chr 0b".y|10|01|r/gee

নমুনা রান:

bash-4.3$ perl -pe 's/./$_=unpack b8,$&;s|0+$||;"chr 0b".y|10|01|r/gee' <<< 'Hello, World!'
v,dd2>
Xdl

bash-4.3$ perl -pe 's/./$_=unpack b8,$&;s|0+$||;"chr 0b".y|10|01|r/gee' <<< 'Hello, World!' | od -tad1
0000000    v    ,    d    d  eot    2    >   nl  eot    X    d    l   rs   nl
         118   44  100  100    4   50   62   10    4   88  100  108   30   10
0000016

1
51 বাইট: -p s/./$_=unpack b8,$&;s|0+$||;"chr 0b".y|10|01|r/geeunpack b8,$&এর চেয়ে খাটো sprintf'%b',ord$&এবং বিপরীত ক্রমে ডিকোড হয়। দুর্ভাগ্যক্রমে এটি 0 সেকেন্ডও তৈরি করে, যা অপসারণ করা দরকার।
প্রিমো

ধন্যবাদ @ প্রিয়মো। unpackআমার জন্য এখনও অনাবিষ্কৃত অঞ্চল।
manatwork

42 বাইট: -p s/./"chr 0b".unpack(b8,~$&)=~s|1+$||r/gee। চরিত্রটি উল্টে দিন, লিপ্যন্তরিত করার দরকার নেই;)
প্রিমো

7

জাভাস্ক্রিপ্ট ( ES6 ES7), 119 114 108 বাইট

এটি প্রত্যাশার চেয়ে দীর্ঘতর পথে পরিণত হয়েছে :(

@ বাইহানকে 5 টি বাইট সংরক্ষণের জন্য ধন্যবাদ! সংরক্ষিত আরও 6 বাইটের জন্য @ETHProductions ধন্যবাদ!

পরীক্ষা করতে:  নীচে স্নিপেট চালান, মত ইনপুট প্রবেশ করুন "Hello, World!"এবং টেস্ট ক্লিক করুন !

x=>String.fromCharCode(...[for(y of x)+('0b'+[...y.charCodeAt().toString(2)].reverse().map(z=>z^1).join``)])
<!--                               Try the test suite below!                              --><strong id="bytecount" style="display:inline; font-size:32px; font-family:Helvetica"></strong><strong id="bytediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><br><pre style="margin:0">Code:</pre><textarea id="textbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><pre style="margin:0">Input:</pre><textarea id="inputbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><button id="testbtn">Test!</button><button id="resetbtn">Reset</button><br><p><strong id="origheader" style="font-family:Helvetica; display:none">Original Code Output:</strong><p><div id="origoutput" style="margin-left:15px"></div><p><strong id="newheader" style="font-family:Helvetica; display:none">New Code Output:</strong><p><div id="newoutput" style="margin-left:15px"></div><script type="text/javascript" id="golfsnippet">var bytecount=document.getElementById("bytecount");var bytediff=document.getElementById("bytediff");var textbox=document.getElementById("textbox");var inputbox=document.getElementById("inputbox");var testbtn=document.getElementById("testbtn");var resetbtn=document.getElementById("resetbtn");var origheader=document.getElementById("origheader");var newheader=document.getElementById("newheader");var origoutput=document.getElementById("origoutput");var newoutput=document.getElementById("newoutput");textbox.style.width=inputbox.style.width=window.innerWidth-50+"px";var _originalCode=null;function getOriginalCode(){if(_originalCode!=null)return _originalCode;var allScripts=document.getElementsByTagName("script");for(var i=0;i<allScripts.length;i++){var script=allScripts[i];if(script.id!="golfsnippet"){originalCode=script.textContent.trim();return originalCode}}}function getNewCode(){return textbox.value.trim()}function getInput(){try{var inputText=inputbox.value.trim();var input=eval("["+inputText+"]");return input}catch(e){return null}}function setTextbox(s){textbox.value=s;onTextboxChange()}function setOutput(output,s){output.innerHTML=s}function addOutput(output,data){output.innerHTML+='<pre style="background-color:'+(data.type=="err"?"lightcoral":"lightgray")+'">'+escape(data.content)+"</pre>"}function getByteCount(s){return(new Blob([s],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"})).size}function onTextboxChange(){var newLength=getByteCount(getNewCode());var oldLength=getByteCount(getOriginalCode());bytecount.innerHTML=newLength+" bytes";var diff=newLength-oldLength;if(diff>0){bytediff.innerHTML="(+"+diff+")";bytediff.style.color="lightcoral"}else if(diff<0){bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgreen"}else{bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgray"}}function onTestBtn(evt){origheader.style.display="inline";newheader.style.display="inline";setOutput(newoutput,"");setOutput(origoutput,"");var input=getInput();if(input===null){addOutput(origoutput,{type:"err",content:"Input is malformed. Using no input."});addOutput(newoutput,{type:"err",content:"Input is malformed. Using no input."});input=[]}doInterpret(getNewCode(),input,function(data){addOutput(newoutput,data)});doInterpret(getOriginalCode(),input,function(data){addOutput(origoutput,data)});evt.stopPropagation();return false}function onResetBtn(evt){setTextbox(getOriginalCode());origheader.style.display="none";newheader.style.display="none";setOutput(origoutput,"");setOutput(newoutput,"")}function escape(s){return s.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}window.alert=function(){};window.prompt=function(){};function doInterpret(code,input,cb){var workerCode=interpret.toString()+";function stdout(s){ self.postMessage( {'type': 'out', 'content': s} ); }"+" function stderr(s){ self.postMessage( {'type': 'err', 'content': s} ); }"+" function kill(){ self.close(); }"+" self.addEventListener('message', function(msg){ interpret(msg.data.code, msg.data.input); });";var interpreter=new Worker(URL.createObjectURL(new Blob([workerCode])));interpreter.addEventListener("message",function(msg){cb(msg.data)});interpreter.postMessage({"code":code,"input":input});setTimeout(function(){interpreter.terminate()},1E4)}setTimeout(function(){getOriginalCode();textbox.addEventListener("input",onTextboxChange);testbtn.addEventListener("click",onTestBtn);resetbtn.addEventListener("click",onResetBtn);setTextbox(getOriginalCode())},100);function interpret(code,input){window={};alert=function(s){stdout(s)};window.alert=alert;console.log=alert;prompt=function(s){if(input.length<1)stderr("not enough input");else{var nextInput=input[0];input=input.slice(1);return nextInput.toString()}};window.prompt=prompt;(function(){try{var evalResult=eval(code);if(typeof evalResult=="function"){var callResult=evalResult.apply(this,input);if(typeof callResult!="undefined")stdout(callResult)}}catch(e){stderr(e.message)}})()};</script>


আমার মনে হয় আপনি প্রতিস্থাপন একটি 4 বাইট বাঁচাতে পারে parseIntসঙ্গে +('0b'+<code>)হিসাবে বর্ণনা এখানে ব্যবহার করে এবং অন্য এক w^1পরিবর্তে+!+w
Downgoat

2
আমি কখনই এটি সম্ভব ভাবিনি, তবে আমি কেবল ০.০৫ বাইট বন্ধ করে দিয়েছি : x=>String.fromCharCode(...[for(y of x)if((c=+('0b'+[...y.charCodeAt().toString(2)].reverse().map(z=>z^1).join``)) >31||c==10)c])(127 - 15% = 107.95) যদিও এটি আইনী নয় তবে; এটা শুধুমাত্র পরিচালনা করে 10 == \n, না 13 == \r। @ ভিɪʜᴀɴ আপনার মতামত কি?
ETH প্রোডাকশনগুলি

1
আমি Unexpected token '>'স্নিপেট চালানোর চেষ্টা করার সময় পেয়েছি।
পল আর

1
@ ইথ প্রডাকশনস: ধন্যবাদ - আমার কাছে কেবল সাফারি এবং ক্রোম রয়েছে এবং আমি অনুমান করি যে এগুলির কোনওটিই "ইএস 6-কমপ্লায়েন্ট" নয়।
পল আর

1
@ পলর ES6, বা ECMAScript 6, জাভাস্ক্রিপ্টের জন্য নতুন বৈশিষ্ট্যগুলির সর্বশেষ সেটগুলির মধ্যে একটি। আরও তথ্যের জন্য এই সাইটটি দেখুন । একটি সামঞ্জস্যতা সারণীও রয়েছে যা দেখায় যে কোন বৈশিষ্ট্যগুলি কোন ব্রাউজারগুলি (এবং অন্যান্য প্রোগ্রামগুলি) সমর্থন করে। বিশেষ করে এই উত্তরের জন্য "তীর ফাংশন", "স্প্রেড অপারেটর" এবং ইএস 7 এর "অ্যারে বোঝা" দরকার।
ETH প্রোডাকশনস

5

জাভাস্ক্রিপ্ট (ES7), 126 বাইট - 15% = 107.1

আমি এই উত্তরটি নিয়ে ঘুরে দেখছিলাম বোনাসটি মূল্যবান কিনা to স্পষ্টতই, এটি হয়। পরীক্ষার স্যুটটি একই উত্তর থেকে চুরি করা হয়েছিল, তবে আমি আমার নিজস্ব পাকটি যুক্ত করেছি: 15% বোনাসের সম্পূর্ণ সমর্থন! :)

x=>String.fromCharCode(...[for(y of x)if((c=+('0b'+[...y.charCodeAt().toString(2)].reverse().map(z=>z^1).join``))>31|c==10)c])
<!--                               Try the test suite below!                              --><strong id="bytecount" style="display:inline; font-size:32px; font-family:Helvetica"></strong><strong id="bytediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><strong id="score" style="display:inline; font-size:32px; font-family:Helvetica">Score:</strong><strong id="scorediff" style="display:inline; margin-left:10px; font-size:32px; font-family:Helvetica; color:lightgray"></strong><br><br><pre style="margin:0">Code:</pre><textarea id="textbox" style="margin-top:5px; margin-bottom:5px"></textarea><br><pre style="margin:0">Input:</pre><textarea id="inputbox" style="margin-top:5px; margin-bottom:5px">"Hello, World!"</textarea><br><button id="testbtn">Test!</button><button id="resetbtn">Reset</button><br><p><strong id="origheader" style="font-family:Helvetica; display:none">Original Code Output:</strong><p><div id="origoutput" style="margin-left:15px"></div><p><strong id="newheader" style="font-family:Helvetica; display:none">New Code Output:</strong><p><div id="newoutput" style="margin-left:15px"></div><script type="text/javascript" id="golfsnippet">var bytecount=document.getElementById("bytecount");var bytediff=document.getElementById("bytediff");var score=document.getElementById("score");var scorediff=document.getElementById("scorediff");var textbox=document.getElementById("textbox");var inputbox=document.getElementById("inputbox");var testbtn=document.getElementById("testbtn");var resetbtn=document.getElementById("resetbtn");var origheader=document.getElementById("origheader");var newheader=document.getElementById("newheader");var origoutput=document.getElementById("origoutput");var newoutput=document.getElementById("newoutput");textbox.style.width=inputbox.style.width=window.innerWidth-50+"px";var _originalCode=null;function getOriginalCode(){if(_originalCode!=null)return _originalCode;var allScripts=document.getElementsByTagName("script");for(var i=0;i<allScripts.length;i++){var script=allScripts[i];if(script.id!="golfsnippet"){originalCode=script.textContent.trim();return originalCode}}}function getNewCode(){return textbox.value.trim()}function getInput(){try{var inputText=inputbox.value.trim();var input=eval("["+inputText+"]");return input}catch(e){return null}}function setTextbox(s){textbox.value=s;onTextboxChange()}function setOutput(output,s){output.innerHTML=s}function addOutput(output,data){output.innerHTML+='<pre style="background-color:'+(data.type=="err"?"lightcoral":"lightgray")+'">'+escape(data.content)+"</pre>"}function getByteCount(s){return(new Blob([s],{encoding:"UTF-8",type:"text/plain;charset=UTF-8"})).size}function getScore(s){var a=1;try{b=eval('('+s+')("Hello, World!")');if(b=="v,dd2>\nXdl")a=.85}catch(e){};return getByteCount(s)*a}function onTextboxChange(){var newLength=getByteCount(getNewCode());var oldLength=getByteCount(getOriginalCode());bytecount.innerHTML=newLength+" bytes";var diff=newLength-oldLength;if(diff>0){bytediff.innerHTML="(+"+diff+")";bytediff.style.color="lightcoral"}else if(diff<0){bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgreen"}else{bytediff.innerHTML="("+diff+")";bytediff.style.color="lightgray"}newLength=getScore(getNewCode());var oldLength=getScore(getOriginalCode());score.innerHTML="Score: "+newLength;var diff=Math.round((newLength-oldLength)*100)/100;if(diff>0){scorediff.innerHTML="(+"+diff+")";scorediff.style.color="lightcoral"}else if(diff<0){scorediff.innerHTML="("+diff+")";scorediff.style.color="lightgreen"}else{scorediff.innerHTML="("+diff+")";scorediff.style.color="lightgray"}}function onTestBtn(evt){origheader.style.display="inline";newheader.style.display="inline";setOutput(newoutput,"");setOutput(origoutput,"");var input=getInput();if(input===null){addOutput(origoutput,{type:"err",content:"Input is malformed. Using no input."});addOutput(newoutput,{type:"err",content:"Input is malformed. Using no input."});input=[]}doInterpret(getNewCode(),input,function(data){addOutput(newoutput,data)});doInterpret(getOriginalCode(),input,function(data){addOutput(origoutput,data)});evt.stopPropagation();return false}function onResetBtn(evt){setTextbox(getOriginalCode());origheader.style.display="none";newheader.style.display="none";setOutput(origoutput,"");setOutput(newoutput,"")}function escape(s){return s.toString().replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}window.alert=function(){};window.prompt=function(){};function doInterpret(code,input,cb){var workerCode=interpret.toString()+";function stdout(s){ self.postMessage( {'type': 'out', 'content': s} ); }"+" function stderr(s){ self.postMessage( {'type': 'err', 'content': s} ); }"+" function kill(){ self.close(); }"+" self.addEventListener('message', function(msg){ interpret(msg.data.code, msg.data.input); });";var interpreter=new Worker(URL.createObjectURL(new Blob([workerCode])));interpreter.addEventListener("message",function(msg){cb(msg.data)});interpreter.postMessage({"code":code,"input":input});setTimeout(function(){interpreter.terminate()},1E4)}setTimeout(function(){getOriginalCode();textbox.addEventListener("input",onTextboxChange);testbtn.addEventListener("click",onTestBtn);resetbtn.addEventListener("click",onResetBtn);setTextbox(getOriginalCode())},100);function interpret(code,input){window={};alert=function(s){stdout(s)};window.alert=alert;console.log=alert;prompt=function(s){if(input.length<1)stderr("not enough input");else{var nextInput=input[0];input=input.slice(1);return nextInput.toString()}};window.prompt=prompt;(function(){try{var evalResult=eval(code);if(typeof evalResult=="function"){var callResult=evalResult.apply(this,input);if(typeof callResult!="undefined")stdout(callResult)}}catch(e){stderr(e.message)}})()};</script>


পরীক্ষার স্নিপেটের দুর্দান্ত পরিবর্তন! মনে হচ্ছে স্নিপেটটি এখন স্বয়ংক্রিয়ভাবে বোনাসের জন্য পরীক্ষা করে, আমি কীভাবে জিজ্ঞাসা করতে পারি আপনি এটি কীভাবে করেছিলেন? (পিএস যদি আপনি মূলটি (এক লাইনে নয়) উত্স চান তবে নির্দ্বিধায় জিজ্ঞাসা করুন, সেভাবে পরিবর্তন করা সহজ হতে পারে)
জুন

ওহ, দুঃখিত এখনই উত্তর না দেওয়ার জন্য দুঃখিত! আমি একটি getScore()ফাংশন যুক্ত করেছি যা Hello, World!মেনে চলার জন্য টেস্ট-কেসটি পরীক্ষা করে (এতে সুবিধাজনকভাবে একটি নতুন লাইন এবং অপ্রিন্টযোগ্য অক্ষর উভয়ই রয়েছে), এবং ফলাফলের উপর নির্ভর করে স্কোরটি .85 বা 1 দ্বারা গুণিত করে দেয়। এবং হ্যাঁ, আন-মিনিফিড স্নিপেটে অ্যাক্সেস দুর্দান্ত হবে। :)
ETH প্রোডাকশন

আমি এখানে মূল স্নিপেট কোড উপলব্ধ করেছি । আনন্দ কর!
জ্রিখ

4

পিএইচপি - 187 182 163 বাইট

<?php $s=$_GET["s"];$m="array_map";echo join($m("chr",$m("bindec",$m(function($v){return strtr($v,[1,0]);},$m("strrev",$m("decbin",$m("ord",str_split($s))))))));?>

মান হিসাবে পাস GET["s"]

অ্যারে_ম্যাপ তাদের সমস্তটিতে কলব্যাক ফাংশন (প্রথম প্যারামিটার) প্রয়োগ করার পরে দ্বিতীয় প্যারামিটারের একটি উপাদান (একটি অ্যারে) দিয়ে একটি অ্যারে প্রদান করে।

আমার 15% echoছাড়তে হবে কিনা তা নিশ্চিত নন, যেহেতু ছাপানো অক্ষরগুলি আউটপুট দেয় না, তবে আমি সেগুলি সরিয়ে ফেলিনি।

আমি আনন্দিত আমি শেষ করেছি, যেহেতু এটিই আমি প্রথম চ্যালেঞ্জটি অংশ নিই।


1
খাটো যদি তুমি না যারা ফাংশন ডিক্লেয়ার: $m='array_map';echo join($m("chr",$m("bindec",$m(function($v){return strtr($v,[1,0]);},$m("strrev",$m("decbin",$m("ord",str_split($s))))))));
manatwork

@ মান্যাটওয়ার্ক এটি সম্পর্কে সম্পূর্ণরূপে ভুলে গিয়েছিল। ধন্যবাদ।
সংজ্ঞায়িত করা

আপনি কেবল একটি চলকতে ইনপুট রাখতে পারবেন না put আপনার কোনও ফাংশন তৈরি করা উচিত বা এর থেকে ইনপুটটি পড়া উচিত STDIN। যাইহোক, আপনি স্ট্রিংয়ের কোট ব্যবহার করবেন (প্রয়োজন হবে না "chr", "bindec", ...) যেহেতু আমরা সাবধান বাণীর পরোয়া করি না। এটি আপনার 12 বাইট সংরক্ষণ করা উচিত।
ব্ল্যাকহোল

@ ব্ল্যাকহোল ইনফোসের জন্য ধন্যবাদ, আমি পরের বারের বিষয়ে সচেতন হব।
undefined

আপনি এই উত্তরে সংশোধনটি আরও ভাল করতে চাইবেন, যা অন্যথায় অবৈধ :)। এটা আপনি প্রায় কোনো বাইট, শুধু প্রতিস্থাপন খরচ হবে str_split($s)সঙ্গে str_split(fgets(STDIN))উদাহরণস্বরূপ।
ব্ল্যাকহোল

3

কে 5, 28 বাইট

`c${b/~|{x@&|\x}@(b:8#2)\x}'

এটি কিছুটা অসুবিধাজনক কারণ কে 5 এর decodeঅপারেটর একটি নির্দিষ্ট-প্রস্থের বেস রূপান্তর সম্পাদন করে, সুতরাং সমস্যার বিবরণী মেনে চলতে আমাকে নেতৃস্থানীয় শূন্যগুলি ছাঁটাতে হবে। ল্যাম্বদা {x@&|\x}এই পদক্ষেপটি সম্পাদন করে।

মলা:

  |\0 0 1 0 1 1 0 1
0 0 1 1 1 1 1 1

জড়ো করা:

  &|\0 0 1 0 1 1 0 1
2 3 4 5 6 7

নির্বাচন করুন:

  {x@&|\x}0 0 1 0 1 1 0 1
1 0 1 1 0 1

পুরো প্রোগ্রামটি কার্যকর:

  `c${b/~|{x@&|\x}@(b:8#2)\x}'"Hello, World"
"v,dd2>\nXdl"

আমি বিশ্বাস করি যে অপ্রিন্টেবলগুলির সাথে ওকের প্রাকৃতিক আচরণ এটিকে 28 * 0.85 = 23.8 এর স্কোর প্রদান করে -15% এর জন্য যোগ্য করে তোলে ।


+1 কারণ আমি চেষ্টা করেছি তবে নেতৃস্থানীয় শূন্যগুলি থেকে মুক্তি পাওয়ার জন্য কোনও ছোট উপায় বের করতে পারিনি!
kirbyfan64sos

কয়েকটি সম্পর্কিত নির্মাণ এখানে পাওয়া যাবে
জন

3

জুলিয়া, 77 বাইট - 15% = 65.45

s->join(filter(isprint,[Char(parse(Int,join(1-digits(Int(c),2)),2))for c=s]))

এটি একটি নামহীন ফান্টন তৈরি করে যা একটি স্ট্রিং গ্রহণ করে এবং একটি স্ট্রিং প্রদান করে। মুদ্রণযোগ্য অক্ষর মুছে ফেলা হয়, যা এটি বোনাসের জন্য যোগ্যতা অর্জন করে।

Ungolfed:

function f(s::AbstractString)
    # digits() returns the digits in reverse order, so no explicit
    # reverse() is needed
    x = [Char(parse(Int, join(1 - digits(Int(c), 2)), 2)) for c = s]

    # Remove unprintables, join into a string
    return join(filter(isprint, x))
end

যদিও এটি অবশ্যই এটি বোনাসের জন্য যোগ্যতা অর্জন করে, এটি বোনাসের সাশ্রয়ের চেয়েও বেশি ব্যয় করে। filter(isprint,)বোনাসের মাধ্যমে 16 বাইট এবং কেবল 11.55 বাইট সংরক্ষণ করা হয়েছে।
গ্লেন ও

এবং যদি আপনি ফিল্টার পদক্ষেপটি ছেড়ে দেন তবে আপনি উপলব্ধি এড়াতে পারবেন এবং স্ট্রিংয়ের সরাসরি মানচিত্র ব্যবহার করে যোগ দিতে পারেন। s->map(c->Char(parse(Int,join(1-digits(Int(c),2)),2)),s)(56 বাইটের জন্য)
গ্লেন ও

@ গ্লেনো পরামর্শগুলির জন্য ধন্যবাদ, তবে সেই পদ্ধতির মাধ্যমে প্রিন্টেবলগুলিতে হেক্স কোড হিসাবে চলে যায়, যা ওপি বলেছে এটি অনুমোদিত নয়। ব্যবহার filter(isprint,)উভয় বোনাসের জন্য এটা যোগ্যতা অর্জন এবং এটি নিয়ম সঙ্গে সঙ্গতিশীল করে তোলে।
অ্যালেক্স এ।

"যদি কোনও অক্ষর অপ্রিনিতযোগ্য হতে থাকে তবে আপনি optionচ্ছিকভাবে এটি আউটপুট দিতে পারেন তবে সেগুলি অপসারণ করতে হবে না।"
গ্লেন ও

এবং যদি উদ্বেগটি এর অন্যদিকে থাকে (এটি এটি যেমন \x04এবং এর মতো প্রদর্শিত হয় ), তবে তার print()জন্য সাতটি ব্যয় হয়, যা 56 56 এ 63 63 পর্যন্ত নিয়ে আসে
গ্লেন ও

3

পাওয়ারশেল, 199 175 (171 - 15%) = 145.35

param([char[]]$a)($a|%{$b=[convert]::ToString(+$_,2);$c=[convert]::ToInt32("$((-join$b[$b.Length..0])-split0-replace1,0-join1)",2);if($c-gt31-or$c-eq10){[char]$c}})-join''

ব্যবহার একজন দুর্ভাগা পরিমাণ কিছু .NET কল / বিল্ট-ইন, যা উল্লেখযোগ্যভাবে কোড bloats।

ব্যাখ্যা:

ইনপুট নেয় param(..)এবং এটিকে কাস্ট করে char[]যাতে আমরা এর মাধ্যমে যথাযথভাবে কাজ করতে পারি।

পরবর্তী বিট (..)-join''একসাথে আমাদের আউটপুট সংগ্রহ করে এবং যোগদান করে।

এই পেরেনগুলির অভ্যন্তরে, আমরা $a|%{..}ফোরচ লুপ হিসাবে পুনরাবৃত্তি করি ।

লুপের ভিতরে:

  • আমরা একটি নতুন স্ট্রিং তৈরি $b, যা আমাদের কোন int হিসাবে ইনপুট অক্ষর নিক্ষেপ করা হয় +$_এবং [convert]বেস ed2
  • এই পরবর্তী বিট, সেটিংসটি $cজটিল, তাই আসুন শুরু করা যাক ভিতরে and
  • আমরা স্ট্রিং এর $bসাথে বিপরীত(-join$b[$b.length..0])
  • বাইনারি স্ট্রিং ইনভার্ট করার জন্য আমরা আমার পূর্ববর্তী কোডটি উত্তোলন করি এবং ফলাফলটি স্ট্রিং হিসাবে পুনরায় সংযুক্ত করি"$(..)"
  • আমরা একটি ভিন্ন .NET কল যে মধ্যে যে স্ট্রিং ভোজন [convert]গুলি ToInt32বেস থেকে 2, যা পরিশেষে মধ্যে যে সংরক্ষিত হয়$c
  • যদি এর $cচেয়ে বড় 31বা সমান হয় তবে 10আমরা এটিকে একটি চর হিসাবে নিক্ষেপ করি এবং ফলাফলটি পাইপলাইনের জন্য আউটপুট (যা -join''একত্রিত হয় এবং উপরে একসাথে এড হয়ে যায়) রেখে দেওয়া হয়, অন্যথায় এই নির্দিষ্ট পুনরাবৃত্তির কিছুই বাদ যায় না

ইসস।

-15% বোনাসের জন্যও যোগ্যতা অর্জন করে।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\reverse-and-invert-a-string.ps1 "Hello, World!"
v,dd2>
Xdl




1

ম্যাটল্যাব, 60 বাইট

@(y)[arrayfun(@(x)bin2dec([97-fliplr(dec2bin(x)) '']),y) '']

মূলত প্রতিটি অক্ষর পরিবর্তে একটি বাইনারি স্ট্রিংয়ে রূপান্তরিত হয় (কোনও অগ্রণী জিরো ছাড়াই)। অ্যারে উল্টানো হয় এবং 97 ('0' + '1') থেকে বিয়োগ করা হয় যা চরিত্রটিকে উল্টে দেয়। এটি দশমিক দশকে রূপান্তরিত হয়। সমস্ত অক্ষর প্রক্রিয়া করার পরে, পুরো অ্যারে তারপরে ফিরে আসার আগে অক্ষরে রূপান্তরিত হয়।


1

পাইথন 3, 95 91

সোজা বাস্তবায়ন।

print(''.join(chr(int(''.join('10'[j>'0']for j in bin(ord(i))[:1:-1]),2))for i in input()))

Ungolfed:

inp = input()
ints = (ord(i) for i in inp)
bins = (bin(i) for i in ints)
revs = (i[2:][::-1] for i in bins) #without leading '0b'
invs = (''.join('0' if j == '1' else '1' for j in i) for i in revs)
newInts = (int(i, 2) for i in invs)
newChars = (chr(i) for i in newInts)
newStr = ''.join(newChars)
print(newStr)

1

রুবি, 62 টি অক্ষর

gets.bytes{|b|$><<b.to_s(2).reverse.tr("01","10").to_i(2).chr}

সামান্য চালান:

bash-4.3$ ruby -e 'gets.bytes{|b|$><<b.to_s(2).reverse.tr("01","10").to_i(2).chr}' <<< 'Hello, World!'
v,dd2>
Xdl

bash-4.3$ ruby -e 'gets.bytes{|b|$><<b.to_s(2).reverse.tr("01","10").to_i(2).chr}' <<< 'Hello, World!' | od -tad1
0000000    v    ,    d    d  eot    2    >   nl  eot    X    d    l   rs   nl
         118   44  100  100    4   50   62   10    4   88  100  108   30   10
0000016

1

সি #, 156 বাইট - 15% = 132.6

class P{static void Main(string[]a){try{for(int i=0,b,c;;){for(b=a[0][i++],c=0;b>0;b/=2)c=c<<1|1-b%2;if(c==10|c>31)System.Console.Write((char)c);}}catch{}}}

স্বচ্ছতার জন্য ইন্ডেন্টেশন এবং নতুন লাইন:

class P{
    static void Main(string[]a){
        try{
            for(int i=0,b,c;;){
                for(b=a[0][i++],c=0;b>0;b/=2)
                    c=c<<1|1-b%2;
                if(c==10|c>31)
                    System.Console.Write((char)c);
            }
        }
        catch{}
    }
}

1

জাভাস্ক্রিপ্ট 123 বাইট

s=>[].map.call(s,s=>String.fromCharCode("0b"+s.charCodeAt().toString(2).split('').reverse().map(s=>s^1).join(''))).join('')

1

রেটিনা , 1107 629 বাইট - 15% = 534.65 (প্রতিদ্বন্দ্বী)

চ্যালেঞ্জ তারিখের পরে যুক্ত বৈশিষ্ট্যগুলি ব্যবহার করে। (এর অন্তর্নিহিত আচরণ $*, , বাছাইকরণ)

রেটিনার কোনও অক্ষরকে তার ASCII অর্ডিনাল বা পিছনে রূপান্তর করার জন্য অন্তর্নির্মিত কিছু নেই ... সুতরাং দেখুন এর লম্পট দৈর্ঘ্য। এটি মুদ্রণযোগ্য এএসসিআইআই পরিচালনা করে এবং মুদ্রণযোগ্য পাশাপাশি নিউলাইনগুলিও সরিয়ে দেয়। বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

কোডটিতে অপ্রিন্টযোগ্য অক্ষর রয়েছে।


¶
±
S_`
%(S`±
{2`
$`
}T01`-`_o
)Ms`.
\d+
$*
+`(1+)\1
${1}0
01
1
%O$^`.

T`01`10
1
01
+`10
011
0

m`^1{1,31}$

M%`1
m`^0¶?

126
~
125
}
124
|
123
{
122
z
121
y
120
x
119
w
118
v
117
u
116
t
115
s
114
r
113
q
112
p
111
o
110
n
109
m
108
l
107
k
106
j
105
i
104
h
103
g
102
f
101
e
100
d
99
c
98
b
97
a
96
`
95
_
94
^
93
]
92
\
91
[
90
Z
89
Y
88
X
87
W
86
V
85
U
84
T
83
S
82
R
81
Q
80
P
79
O
78
N
77
M
76
L
75
K
74
J
73
I
72
H
71
G
70
F
69
E
68
D
67
C
66
B
65
A
64
@
63
?
62
>
61
=
60
<
59
;
58
:
57
9
56
8
55
7
54
6
32

33
!
34
"
35
#
36
$
37
%
38
&
39
'
40
(
41
)
42
*
43
+
44
,
45
-
46
.
47
/
48
0
49
1
50
2
51
3
52
4
53
5
¶

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

যদি আপনি অ্যানারি পাটিগণিতের জন্য রেটিনা টিউটোরিয়ালটি পরীক্ষা করে দেখেন তবে আপনি আমার কোডের বিভিন্ন টুকরাটি সেখান থেকে আগত হিসাবে চিনতে পারবেন।

মার্টিনকে কয়েকশো বাইট গলফ করার জন্য ধন্যবাদ


1

জাভা, 205 - 15% = 174.2

interface F{static void main(String[]a){for(int i=0,c,s;i<a[0].length();++i){c=a[0].charAt(i);s=Integer.numberOfLeadingZeros(c);c=~(Integer.reverse(c)>>s)&-1>>>s;if(c==10|c>31)System.out.print((char)c);}}}

Ungolfed:

interface F {
    static void main(String[] a) {
        for (int i = 0, c, s; i < a[0].length(); ++i) {
            c = a[0].charAt(i);
            s = Integer.numberOfLeadingZeros(c);
            c = ~(Integer.reverse(c) >> s) & -1 >>> s;
            if (c == 10 | c > 31) System.out.print((char)c);
        }
    }
}

আমি মনে করি যে Integerপদ্ধতিগুলি ব্যবহারের ক্ষেত্রে এই সমাধানটি কিছুটা আকর্ষণীয় Integer.reverseএবং Integer.numberOfLeadingZerosযা তারা শুনতে পছন্দ করে তা করে এবং শীর্ষস্থানীয় শূন্যগুলির সংখ্যাটি -1 >>> sকোথায় s, তা আমরা চাই না এমন উচ্চ বিটগুলি মুখোশের মুখোশটি পেতে। আমি কেবল আফসোস করছি যে পরবর্তী পদ্ধতির নামটি এতটাই অভিব্যক্তিপূর্ণ, তবে জাভাতে গল্ফ করার জন্য আমি এটাই পাই।

আউটপুট:

v,dd2>
Xdl

1

জাপট, 25 বাইট

একটি গোল্ফি জাভাস্ক্রিপ্ট প্রোগ্রাম তৈরি করতে চান, তবে সংক্ষিপ্ততম পদ্ধতিতে প্রচুর দীর্ঘ কর্মের নাম জড়িত? জাপট এর জন্য তৈরি হয়েছিল। :)

UmX=>Xc s2 w mY=>Y^1 n2 d

অনলাইন দোভাষী এ চেষ্টা করুন !

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

         // Implicit: U = first item in input
UmX=>    // for each character X in U:
Xc s2 w  //  take the char-code of X, convert to binary, and reverse
mY=>     //  for each character Y in this:
Y^1      //   take Y XOR 1 (converts 1 to 0 and 0 to 1)
n2 d     //  convert the result back to decimal, then to a character
         // Implicit: output last expression

জাপটের বর্তমান সংস্করণ (v1.4.4 হিসাবে) ব্যবহার করে বাইট গণনাটি 14 কেটে নেওয়া যেতে পারে:

®c ¤w m^1 n2 d

এটি অনলাইন পরীক্ষা!


0

হাস্কেল, 167 বাইট

import Data.Char
import Numeric
r '0'='1'
r '1'='0'
s=map (chr.fst.head.(readInt 2 (`elem` "01") digitToInt).(map r).reverse.flip (showIntAtBase 2 intToDigit . ord)"")

দুর্ভাগ্যক্রমে হাস্কেল যখন অন্য বেসে পড়তে / মুদ্রণের প্রয়োজন হয় তখন বেশ ভার্জোজ হয় ...


0

পার্ল 6, 66 বাইট

মুদ্রণ-বিহীন নিয়ন্ত্রণের অক্ষরগুলি সরিয়ে অলআউট করে আমাকে (83 + 1) -15% = 71.4 এ পেয়ে যায়

perl6 -ne 'print grep /<-:C+[\n]>/,.ords».base(2)».flip.map({chr :2([~] $_.comb.map(+!+*))})'

আমি যদি নিয়ন্ত্রণের অক্ষরগুলি বাদ দেয় এমন কোডটি সরিয়ে ফেলি তবে আমি বেশ কিছুটা 65 + 1 = 66 টি সংরক্ষণ করি

perl6 -ne 'print .ords».base(2)».flip.map({chr :2([~] $_.comb.map(+!+*))})'

(আমি স্পষ্টতার »পরিবর্তে ব্যবহার করেছি >>)



0

র‌্যাকেট 250 15% বোনাস = 212 বাইট

(λ(s)(list->string(map integer->char(filter(λ(x)(or(> x 31)(= x 10)))(for/list((i(string->list s)))(string->number(string-append
"#b"(list->string(map(λ(i)(if(equal? #\0 i)#\1 #\0))(reverse(string->list(number->string(char->integer i)2))))))))))))

Ungolfed:

(define (f s)
    (list->string 
     (map 
      integer->char
      (filter
       (λ(x)(or(> x 31)(= x 10)))

       (for/list ((i (string->list s)))
         (string->number
          (string-append
           "#b"
           (list->string
            (map
             (λ(i)(if(equal? #\0 i) #\1 #\0))
             (reverse
              (string->list
               (number->string
                (char->integer i) 2)
               )))))))))))

পরীক্ষামূলক:

(f "Hello, World!")

আউটপুট:

"v,dd2>\nXdl"

0

পিএইচপি, 80 বাইট

while(a&$c=$argn[$i++])echo chr(bindec(strtr(strrev(decbin(ord($c))),10,"01")));

এসটিডিআইএন থেকে ইনপুট নেয়; সাথে চালানো -R

বোনাস সংস্করণ, 97 110 বাইট -> 93.5 স্কোর

while(a&$c=$argn[$i++])ctype_print($c=chr(bindec(strtr(strrev(decbin(ord($c))),10,"01"))))||"
"==$c?print$c:0;

ASCII 10 এবং 32 থেকে 126 মুদ্রণ করে (নতুন লাইন এবং মুদ্রণযোগ্য)


ভাঙ্গন, টিআইও এবং সম্ভব হলে কিছু গল্ফিং অনুসরণ করবে; আমি এখনই ক্লান্ত।

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