पुराने सी कोड ट्रांसमोग्रिफ़र *


13

* एक ट्रांसमीटर क्या है?

में सी प्रोग्रामिंग भाषा , वहाँ संरचनाओं कहा जाता है द्वि आलेख और trigraphs कि दो और तीन पात्रों दृश्यों कि कम आम अक्षरों तक का मूल्यांकन कर रहे हैं। उदाहरण के लिए, ??-यदि आपका कीबोर्ड नहीं है तो आप इसका उपयोग कर सकते हैं ~

दिए गए पाठ में, निम्नलिखित डिग्राफ और ट्रिग्राफ (बाईं ओर) के सभी उदाहरणों को सही, छोटे, गोल्फ वाले चरित्र (दाईं ओर) से बदलें।

??=  #
??/  \
??'  ^
??(  [
??)  ]
??!  |
??<  {
??>  }
??-  ~
<:   [
:>   ]
<%   {
%>   }
%:   #

स्रोत

इनपुट

इनपुट ASCII टेक्स्ट है। अनुगामी न्यूलाइन की अनुमति दी। वैध सी कोड होने की आवश्यकता नहीं है।

उत्पादन

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

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

=> इनपुट और आउटपुट को अलग करता है।

if (true ??!??! false) { => if (true || false) {

??-arr.indexOf(n) => ~arr.indexOf(n)

function f(??) { console.log('test??'); } => function f(] { console.log('test^); }

/* comment :> :) *??/ => /* comment ] :) *\

%:What am I doing??!!??` => `#What am I doing|!??

??(??)??(??) <:-- not a palindrome => [][] [-- not a palindrome

?????????? => ??????????

int f(int??(??) a) ??< return a??(0??)??'a??(1??) + "??/n"; ??> => int f(int[] a) { return a[0]^a[1] + "\n"; }

??<:>??<% => {]{%

<:> => [>

<::> => []

:>> => ]>

#\^[]|{}~ => #\^[]|{}~

: > => : >

??=%: => ##

3
कृपया उदाहरणों से `को हटा दें। इससे उन्हें पढ़ना मुश्किल हो जाता है।
caird coinheringaahing

4
"??=%:"एक और प्रासंगिक परीक्षण मामला है: C में, इसका मतलब है कि "#%:"जहां %:कोई विशेष नहीं है, लेकिन मुझे लगता है कि आपका अपेक्षित आउटपुट है "##"
hvd

@ शैतान का क्या होगा, मैं मूल रूप से इनपुट / आउटपुट को अधिक पठनीय बनाने के लिए कोड ब्लॉक में नहीं था लेकिन राइकर ने इसे बदल दिया। अगली बार खुद को प्रारूपित करने जैसा कुछ महसूस करने के लिए स्वतंत्र महसूस करें :)
स्टीफन

1
तो, आप गोल्फ कोड के लिए गोल्फ कोड के लिए पूछ रहे हैं। बोनस गोल्फ :-)
मस्त

@ यह विचार है
स्टीफन

जवाबों:


5

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

T`-=/'()!<>?`~#\\^[]|{}_`\?\?[-=/'()!<>]
<:
[
:>
]
<%
{
>%
}
%:
#

इसे ऑनलाइन आज़माएं! Tउपयोग करने के लिए थोड़ा अजीब है, लेकिन अभी भी मुझे 14 बाइट्स बचाता है।


क्या आप कर सकते हैं \?\?[^:%]?
ETHproductions

( \?\?[^:%?]बल्कि)
ETHproductions

@ETHproductions जो साइड इफ़ेक्ट में बदल ??aजाएगा a
eush77

@ eush77 ओह हम्म, आप सही कह रहे हैं ...
ETHproductions

%>इसके बजाय लाइन 8 होनी चाहिए >%
डेनिस

7

सी, 206 205 बाइट्स

(-1 सीटिंग के लिए धन्यवाद)

पठनीयता के लिए नई कहानियाँ यहाँ हैं।

c,d,q;f(char*s){for(char*S,*T,*t=s;c-63?q=0:q++,d=c<<8|*s,*s?
q>1&&(T=index(S="=/'()!<>-",*s))?t-=2,*s="#\\^[]|{}~"[T-S]:
d>*s&&(T=strstr(S=">:<>%<:%",&d))&&(c="][ }{ # "[T-S])&1?--t,*s=c:0:
0,*t++=c=*s++;);}

sजगह में संशोधन करता है। जीसीसी के साथ परीक्षण किया और 32-बिट और 64-बिट मोड में फेडोरा वर्कस्टेशन, x86 पर भिड़ा।

सी यहाँ गोल्फ के लिए सबसे अच्छी भाषा नहीं है।


C is not exactly the best language for golfing here.मजाक नहीं। अच्छा लग रहा है :) वापस सोचते हुए, मुझे सभी प्रश्नों को +1 या +2 बाइट्स जोड़ने के लिए मजबूर करना चाहिए, यदि वे एक पात्र का उपयोग करते हैं जो एक डिग्राफ या ट्रिग्राफ xD बनाता है
स्टीफन

1
आप इसे और भी बदतर बना सकते हैं: प्रत्येक वर्ण के लिए +1 या +2 जो कि di- / ट्रिगर का हिस्सा हो सकता है वास्तव में चोट लगेगी :)
hvd

5

जावास्क्रिप्ट (ईएस 6), 106 बाइट्स

s=>[...'#\\^[]|{}~[]{}#'].map((c,i)=>s=s.split('<:<%%'[i-9]+':>%>:'[i-9]||'??'+"=/'()!<>-"[i]).join(c))&&s

कैसे?

यह बहुत सीधा है।

हमें ध्यान देना चाहिए कि:

  • जब मैं 9 से कम होता है , तो अभिव्यक्ति का '<:<%%'[i-9] + ':>%>:'[i-9]मूल्यांकन होता है कि undefined + undefinedकौन सा बराबरी की है NaN(उम्मीद के मुताबिक झूठी)।

  • जब मैं 9 से अधिक या उसके बराबर होता है , तो अभिव्यक्ति का '??' + "=/'()!<>-"[i]मूल्यांकन "??" + undefinedस्ट्रिंग के लिए किया जाता है "??undefined"(सच जब हम गलत परिणाम की उम्मीद करते हैं)।

इसलिए हमें इस क्रम में परीक्षण की प्रक्रिया करनी चाहिए।

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




2

PHP, 112 बाइट्स

<?=str_replace(explode(_,strtr("<:_:>_<%_%>_%:0=0/0'0(0)0!0<0>0-",["_??"])),str_split("[]{}##\\^[]|{}~"),$argn);

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

PHP, 115 बाइट्स

<?=str_replace(explode(_,"??=_??/_??'_??(_??)_??!_??<_??>_??-_<:_:>_<%_%>_%:"),str_split("#\\^[]|{}~[]{}#"),$argn);

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

PHP, 124 बाइट्स

रेगेक्स समाधान

foreach(explode(_,"=|%:_/_'_\(|<:_\)|:>_!_<|<%_>|%>_-")as$v)$a=preg_replace("#\?\?$v#","#\\^[]|{}~"[$k++],$a=&$argn);echo$a;

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


1

जावास्क्रिप्ट (ईएस 6), 113 बाइट्स

s=>s.replace(/\?\?[^:%?]|[<:%]./g,c=>"#\\^[]|{}~"["=/'()!<>-".indexOf(c[2])]||"[] {} #"["<:><%>%:".indexOf(c)]||c)

सबसे छोटा नहीं है, लेकिन मैं एक अलग दृष्टिकोण की कोशिश करना चाहता था।

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