गुप्त भाषा में परिवर्तित करना


9

किसी भी भाषा में कुछ कोड लिखें जो एक स्ट्रिंग का इनपुट करता है जैसे कि "आज एक महान दिन है" (ध्यान दें कि कोई विराम चिह्न नहीं है) और इसे "गुप्त भाषा" में परिवर्तित करता है। यहाँ "गुप्त भाषा" के नियम हैं।

  • a = c, b = d, c = e और इसी तरह (y = a और z = b)
  • प्रत्येक शब्द को एक स्थान से अलग करें
  • सुनिश्चित करें कि उचित पूंजीकरण है

उदाहरण:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

यह एक लोकप्रियता-प्रतियोगिता है। अन्य उपयोगकर्ताओं को "अभी तक" अद्वितीय "कोड" के लिए सबसे अधिक की तलाश करके अंक देना चाहिए।

चुनौती: मैं अपूर्व प्रोग्रामिंग भाषाओं को देख रहा था और मुझे पीट ( एसोलैंग ) नामक एक भाषा मिली । मैं किसी को भी इस भाषा में लिखने की चुनौती देता हूं।


ऐसा नहीं होना चाहिए x=z, y=a, z=b?
r3mainer

आप सही हैं "दूह" :)
विक पी

3
मैं जब तक मुझे एहसास हुआ कि भ्रमित किया गया था a=cहै a -> c
जस्टिन

6
दूसरे शब्दों में, ROT2 यह
टोबियास Kienzler

2
रोट 13 और रोट 2 दोनों अलग-अलग कुंजी (13 और 2) के साथ सीज़र सिफर हैं
सिल्वेस्टर

जवाबों:


18

स्मॉलटॉक (स्मॉलटॉक / एक्स), 29 27 वर्ण

मैं भाग्यशाली हूं - यह पहले से ही स्ट्रिंग क्लास में है:

'Today is a great day' rot:2
    -> 'Vqfca ku c itgcv fca'

I / O को जोड़ने से यह बनता है:

(Stdin nextLine rot:2)print

नीचे दिए गए उदाहरण के बारे में डॉर्कनोब के अस्पष्ट उदाहरण की भावना में:

Parser evaluate:('(Uvfkp pgzvNkpg tqv:2)rtkpvPN' rot:-2)

2
मैंने कभी नहीं सोचा था कि मैं एक स्मॉलटाक समाधान देखूंगा!
टूथब्रश

13

रूबी, अस्पष्ट संस्करण (टिप्पणी सहित)!

मैं पूरी बात पढ़ने का सुझाव देता हूं; मुझे यह काफी मनोरंजक लगता है;)

$s='';class Module;def const_missing c

# MAGIC:
$s+="#{c}".split("#{$;}").map{|x|x.ord-8**2}.reduce(:"#{43.chr}").chr;end;end

              # My commentary ;)

ZZZY          # ?
YAYYY         # Oookay; you seem excited
Yaz           # Typo?
Yay           # Better
JEEEEEEF      # You misspelled Jeff's name
LAZZZY        # Yes, you are very lazy
Yax           # Another typo...
LLAMA         # Definitely not completely random at all...
EEEEEEEEEEEEE # Ouch my ears
IIIII         # Ouch stop
ASDFASDFASDF  # I SAID STOP BANGING ON THE KEYBOARD
YUMMY         # ... you eat keyboards?
IIIII         # Stop!
YUMMYY        # Why are you eating your keyboard
LLAMA         # That doesn't make sense :(
VV            # :(
LLAMA         # Could you stop saying that?!
CODEGOLF      # Yay, one of my favorite SE sites! :D
VW            # I don't drive
ASDFASDFASDF  # Why do you keep banging on your keyboard?!?!
EEEEEEEEEEEEE # No
VVV           # Stop
HELLOo        # ...it's a little late for a greeting, isn't it?
DOGS          # ...
OOOOOo        # No, you're not a ghost.
HELLOOOO      # Just a *bit* late.
NNNNNNN       # Huh?
LLAMA         # I said to stop.

print eval$s

यह कैसे काम करता है पर संकेत (बिगाड़ने, दिखाने के लिए हॉवर):

यह कोड एक स्ट्रिंग बनाता है और फिर उसका मूल्यांकन करता है।

यह const_missingचरित्र द्वारा स्ट्रिंग चरित्र बनाने के लिए उपयोग करता है।

यह निर्माण समाप्त होने वाली स्ट्रिंग है gets.tr'A-Za-z','C-ZABc-zab'


कमेंट्री इस प्रश्न के कुछ चैट की तरह पढ़ती है: codegolf.stackexchange.com/questions/20914/who-is-this-chatbot/…

13

परिशिष्ट भाग

मुख्यालय की आवश्यकता है कि अब से सभी एजेंटों को विशेष शीर्ष गुप्त फ़ॉन्ट का उपयोग करके केवल मुद्रित रूप में संचार प्राप्त होगा (जैसा कि इलेक्ट्रॉनिक चैनल बहुत अविश्वसनीय साबित हुए हैं)। यह हमारी जिम्मेदारी है कि आप इस शीर्ष गुप्त प्रक्रिया को हमारे प्रिंटिंग सॉफ्टवेयर के प्रस्ताव में शामिल करें:

/define_Secret_font {
    /Secret_font
    /Coronet findfont dup 
    /Encoding get 
    aload pop 256 array astore 
    /secret_proc {
        2 copy
        26 getinterval aload pop 
        26 -2 roll 26 array astore
        putinterval
    } def
    dup 65 secret_proc
    dup 97 secret_proc
    exch dup length dict dup
    3 -1 roll {put dup} forall
    exch /Encoding 4 -1 roll put 
    definefont pop
} def

और केवल उस फ़ॉन्ट की अनुमति है, जैसे:

define_Secret_font
/Secret_font 36 selectfont
0 841 translate
20 -60 moveto
(Today is a great day) show
20 -120 moveto
(Programming Puzzles & Code Golf) show
showpage

और यही वह प्रिंट करता है: यहां छवि विवरण दर्ज करें


11

दे घुमा के

क्लासिक।

tr A-Za-z C-ZABc-zab

उदाहरण:

$ tr A-Za-z C-ZABc-zab <<< "Today is a great day"
Vqfca ku c itgcv fca

मुझे लगता है कि आपको उद्धरण चिह्नों की आवश्यकता नहीं है।
मेरिनस

@marinus तुम सही हो, मैं इसे बदल दूंगा।
डेनिएरो

5

DFSORT (IBM मेनफ्रेम सॉर्टिंग प्रोग्राम)

 OPTION COPY
 INREC BUILD=(1,80,TRAN=ALTSEQ)

कोई भी SORT कंट्रोल स्टेटमेंट कॉलम एक में शुरू नहीं हो सकता है।

ऊपर अपने आप काम करने के लिए, आपको अंतिम दो अक्षरों के चारों ओर लपेटते हुए ऊपरी और निचले मामलों के अक्षरों के लिए सभी मूल्यों को ऑफसेट करने के लिए, डिफ़ॉल्ट स्थापना वैकल्पिक अनुवाद तालिका को बदलना होगा।

डिफ़ॉल्ट तालिका को बदलने के बिना, यह सभी आवश्यक जोड़े को हेक्स मानों से सूचीबद्ध करने के लिए ALTSEQ स्टेटमेंट की आवश्यकता होगी (से-हेक्स-कोड तुरंत-हेक्स-कोड के बाद, हेक्स मूल्यों के प्रत्येक जोड़े को अल्पविराम द्वारा अलग किया जाता है):

 OPTION COPY
 INREC BUILD=(1,80,TRAN=ALTSEQ)
 ALTSEQ CODE=(xxyy,...)

तो ऊपरी मामला EBCDIC A से C और B से D पाने के लिए:

ALTSEQ CODE = (C1C3, C2C4)

पूरी बात के लिए, यह त्रुटि-प्रवण टाइपिंग का एक बहुत होगा, इसलिए, आप इस कदम के लिए नियंत्रण कार्ड उत्पन्न करने के लिए एक और SORT कदम का उपयोग करेंगे, और SORT उन्हें उस नए चरण द्वारा बनाए गए डेटासेट से पढ़ने दें।

बेशक, किसी भी भाषा के लिए जो "अनुवाद तालिका" का समर्थन करता है, अनुवाद तालिका को बदलना उतना ही आसान है। एक विशिष्ट कोडपेज के साथ अच्छा COBOL कार्यक्रम, और यह COBOL प्रक्रिया कोड की एक पंक्ति में किया जा सकता है (साथ ही COBOL की अनिवार्य रेखाएँ जो सब कुछ के साथ जाती हैं ... इस विशेष मामले में इतने सारे नहीं)।

ओह, 1,80 "कार्ड छवि" है जिसमें पाठ शामिल होगा। पहले रन पर शायद ऊपरी तौर पर सभी ...


+1। ROT2 के लिए DFSORT का उपयोग करना वास्तव में अद्वितीय है।
अभिजीत

3

सी, 75 बाइट्स

main(c){while((c=getchar())>0)putchar(isalpha(c)?(c&224)+((c&31)+2)%26:c);}

उदाहरण:

$echo "Today is a great day" |./a.out
Vqfca ku c itgcv fca

EOF मान रहा है -1 आप ~(c=getchar())
बिट का

और चूंकि प्रश्न कहता है कि कोई विराम चिह्न नहीं हैं, केवल गैर-वर्णमाला वर्ण स्थान है, इसलिए आप c-32इसके बजाय इसके साथ परीक्षण कर सकते हैं , जो आपको 6
चार्ट

यह एक लोकप्रियता प्रतियोगिता है और कोड-गोल्फ नहीं है
Mhmd

कोड गोल्फ अब लोकप्रियता के लिए विरोधी है?
डेस्टी

@ user689 आप सही हैं, क्षमा करें मैंने प्रश्न को ध्यान से नहीं पढ़ा। चूँकि यह कोड एक ही पंक्ति में त्रैमासिक ऑपरेटर और नहीं के साथ लिखा गया है int, और यहां तक ​​कि एक चार गिनती भी प्रदान की गई है, मैंने किसी तरह यह मान लिया कि यह कोड गोल्फ था। माफ़ करना।
user12205

3

अजगर

a = list('abcdefghijklmnopqrstuvwxyz')
b = list('yzabcdefghijklmnopqrstuvwx')

c = {}

#generate conversion dictionary

for i in range(len(a)):
    c[a[i]] = b[i]

instring = "the weather is very nice today"

outstring = ""

for i in list(instring):
    try:
        outstring += c[i]
    except:
        outstring += i

print outstring

आउटपुट:

rfc ucyrfcp gq tcpw lgac rmbyw


(१) यह +3सही है? (2) आप इसे और अधिक जटिल बनाने के लिए बहुत सारे सामान को इनलाइन कर सकते हैं। (ऐसा लगता है कि यहाँ एक प्रवृत्ति है)
साइमन कुआंग

b = a[2:] + a[:2]कम टाइपो-प्रवण होगा, और लगता है कि स्ट्रिंग aको परिवर्तित करने की कोई आवश्यकता नहीं हैlist
टोबीस किन्ज़्लर

ओह, और c = dict(zip(a,b))। और exceptइतना सामान्य नहीं होना चाहिए, except KeyError
टोबियास किंजलर

strसंघनन सुपर धीमी है। एक बनाएँ listऔर उन्हें एक साथ मिलाने से बहुत बेहतर होगा।
21

3

जावास्क्रिप्ट

// setup alphabet and secret rotated alphabet
//
var alpha=' abcdefghijklmnopqrstuvwxyz'
var rotor=' cdefghijklmnopqrstuvwxyzab'
alpha+=alpha.toUpperCase()
rotor+=rotor.toUpperCase()

function encrypt(str) {
 return crypt(str, alpha, rotor)
}

function decrypt(str) {
 return crypt(str, rotor, alpha)
}

// swap position of char from one dictionary to the other
function crypt(msg, d1, d2) {
 var out=''
 var len=str.length
 for(var i=0; i < len; i++) {
  var c = msg.charAt(i)
  var j = d1.indexOf(c)
  out += d2.charAt(j)
 }
 return out
}

3

पीएचपी

हालांकि कम से कम एक नहीं!

लाइव उदाहरण: https://eval.in/102173

<?php
$str = 'Today is a great day';
$out = implode('', array_map(function ($val) {
  if ($val == ' ') return ' ';
  $c = ord($val)+2;

  if (ctype_lower($val)) {
    if ($c > ord('z')) {
      return chr(ord('`') + ($c - ord('z')));
    }
    return chr($c);
  }
  else {
    if ($c > ord('Z')) {
      return chr(ord('A') + ($c - ord('Z')));
    }
    return chr($c);
  }  
}, str_split($str)));

var_dump($out);

ध्यान दें:

ord('`') = ord('a') - 1

3

TI-Basic (वह भाषा जो TI-83 रेखांकन कैलकुलेटर पर चलती है)

:ClrHome  
:" abcdefghijklmnopqrstuvwxyz" //all symbols that can be interpreted  
:Ans+Ans+Ans->Str1  
:Menu("crippter","encript",1,"decript",2  
:Lbl 2  
:1->C  
:Lbl 1  
:if not(C)  
:Imput ">",Str2  
:if C  
:Imput "<",Str2  
:length(Str2)->D  
:lenght(Str1)/3->E  
:if not(C)  
:Then  
:randInt(1,E)->B  
:sub(Str1,B,1)->Str3  
:Else  
:inString(Str1,sub(Str2,1,1),1)->B  
":"->Str3  
:For(X,1+C,D  
:inString(Str1,sub(Str2,X,1)->A  
:if not(C  
:A+E-B-X->A  
:if C  
:A+B+X-1->A  
:Str3+sub(Str1,A,1)->Str3  
:End  
:if C  
:sub(Str3,2,D-1)->Str3  
:Pause Str3  
:Goto A  

यह कुछ अच्छा एन्क्रिप्शन सॉफ्टवेयर (TI-83 के लिए) है। Ti-83 से मेरा तात्पर्य ti-83 या ti-84 परिवार में किसी भी कैलकुलेटर से है। "->" का अर्थ है "STORE" "STO>" द्वारा अभिगमन


3

माणिक 40 32

p gets.tr("A-XY-Za-xy-z","C-ZA-Bc-za-b") 

अद्यतन (के रूप में danieros बैश ​​समाधान से देखा):

p gets.tr("A-Za-z","C-ZABc-zab")

3

जावा, यह वास्तव में समझ में आता है।

मुझे पता है कि व्हॉट्सएप और कोष्ठक के साथ कुछ भी सीजी पर एक कठिन समय है, लेकिन यहां एक शॉट है।

    class SecretLanguage {

    public static void main(String[] args) {
    for (String S : args) {
        for (char s : S.toCharArray()) {
        System.out.print((char) (s + ((s < 'y') ? 2 : -24)));
        }
        System.out.print(" ");
    }
    }
}

कोड को बाधित करने के लिए अलग-अलग प्रतियोगिताएं होती हैं, लेकिन मैं अपना हास्यास्पद भी बना सकता हूं।

class S{public static void main(String[]args){for(String str:args){for(char i:(str).toCharArray())System.out.print((char)(i+((i<'y')?2:-24)));System.out.print(" ");}}

2

जावास्क्रिप्ट

var str = '';
var textInput = 'myString';
for (var i = 0; i < textInput.length; i++) {
    str += textInput.charAt(i).replace(/([a-zA-Z])[^a-zA-Z]*$/, function (a) {
        var c = a.charCodeAt(0);
        switch (c) {
            case 89:
                return 'A'; //Letter Y!
            case 90:
                return 'B'; //Letter Z!
            case 121:
                return 'a'; //Letter y!
            case 122: //Letter z!
                return 'b';
            default:
                return String.fromCharCode(c + 2); //If not y, Y, z, or Z, then just two more from the usual char code
        }
    })
}
console.log(str);

सभी टिप्पणियों के साथ क्या, मेरे हम्सटर यह समझ सकते हैं।


2

मुझे लगता है कि मैं इसे ROT2 करूँगा!

जावास्क्रिप्ट

function r(a,b){return++b?String.fromCharCode((a<"["?91:123)>(a=a.charCodeAt()+2)?a:a-26):a.replace(/[A-z]/g,r)}

console.log(r('Qccipcr'));

मैंने पहली बार ऐसा कुछ सोचा था, लेकिन मैंने कभी नहीं सोचा था [A-z]!
टूथब्रश

2

हास्केल

यहाँ एक लेंस आधारित कार्यान्वयन है। मैं Isoनियमित पाठ और गुप्त भाषा में परिवर्तित पाठ के बीच समरूपता का प्रतिनिधित्व करने के लिए उपयोग कर रहा हूं । जब तक आप --fromविकल्प प्रदान नहीं करते , इनपुट गुप्त भाषा में परिवर्तित हो जाता है। यदि --fromविकल्प प्रदान किया जाता है, तो विपरीत रूपांतरण किया जाता है।

module Main where
import Control.Lens
import System.Environment (getArgs)
import Data.Char          (ord, chr, isUpper, isSpace)
import Data.Word          (Word8)

ord8 :: Char -> Word8
ord8 = fromIntegral . ord

chr8 :: Word8 -> Char
chr8 = chr . fromIntegral

ordIso :: Iso' Char Word8
ordIso = iso ord8 chr8

firstLetterOrd :: Word8 -> Word8
firstLetterOrd n
  | n ^. from ordIso . to isUpper = ord8 'A'
  | otherwise                     = ord8 'a'

secretChar :: Iso' Char Char
secretChar =
  iso toSecret
      fromSecret
  where
    toSecret, fromSecret :: Char -> Char
    toSecret   = secretConversion   2
    fromSecret = secretConversion (-2)

secretConversion :: Int -> Char -> Char
secretConversion n c
  | isSpace c = c
  | otherwise = c & over ordIso (secretShift n)

secretShift :: Int -> Word8 -> Word8
secretShift shiftAmount =
  preserveLetters $ (`mod` 26) . (+ shiftAmount)

preserveLetters :: (Int -> Int) -> Word8 -> Word8
preserveLetters fn n =
  firstLetter + overWord8 fn (n - firstLetter)
  where
    firstLetter = firstLetterOrd n

overWord8 :: (Int -> Int) -> Word8 -> Word8
overWord8 fn = fromIntegral . fn . fromIntegral

help :: IO ()
help =
  putStr
  $ unlines
      ["SecretLang [--from]"
      ,"If the --from option is provided, the program"
      ,"converts from the secret language. Otherwise,"
      ,"it converts to the secret language."
      ]

convertContents :: (String -> String) -> IO ()
convertContents fn = do
  input <- getContents
  putStrLn . ("Output: " ++) $ fn input

main :: IO ()
main = do
  args <- getArgs

  case args of
    ("--from":_) ->
      convertContents (^. mapping (from secretChar))

    ("--help":_) -> help
    ("-h"    :_) -> help

    _            ->
      convertContents (^. mapping secretChar)

उदाहरण:

$ ./SecretLang
Today is a great day
Output: Vqfca ku c itgcv fca

$ ./SecretLang --from
Vqfca ku c itgcv fca
Output: Today is a great day

1

सी

    #include<stdio.h>

    int main()
    { char p[256];
    int i;
    fgets ( p, 256, stdin );
    for(i=0; i<256 ; i++)
    {
   if ( p[i] == '\n' )
    {
    p[i] = '\0';
    break;
    }
    else
    {

    if((p[i] >= 'a' && p[i] <= 'x') || (p[i] >= 'A' && p[i] <= 'X') )
    {
        p[i] +=2;
    }

    else
    {
    switch(p[i])
     {
        case 'y':    p[i] = 'a';
                     break;

       case 'Y':    p[i] = 'A';
                     break;

       case 'z':    p[i] = 'b';
                     break;
       case 'Z':    p[i] = 'B';
                     break;
       case ' ':    p[i] = ' ';
                     break;


     }
    }
}}

printf("%s", p);

    return 0;
 }

आप वर्ण पर अंकुश अंकगणितीय का उपयोग करके बहुत से कोड बचा सकते हैं ...
मोदुलू blabla999

@ blabla999 यह एक लोकप्रियता प्रतियोगिता है और कोड-गोल्फ नहीं है
Mmd

1
खेद - अपमान करने का नहीं है। मैंने उसकी अनदेखी की।
blabla999

1

EcmaScript 6:

alert(prompt(_='').split(_).map(x=>String.fromCharCode(x.charCodeAt()+(x>' '?x>'x'|x>'X'&x<'['?-24:2:0))).join(_))

EcmaScript, मेरा विकसित ओल 'दुश्मन
22

1

जावा

32है spaceतो हम इसे प्रिंट के रूप में
88है Xतो कुछ भी कम से कम 892 वर्ण चाल
90है Zइसलिए कुछ भी की तुलना में कम 91(कम से कम कुछ भी साथ 24 वर्ण नीचे ले जाता है 89पहले से ही ऐसा ही संभाला 89और 90प्रभावी रूप से)
छोटे अक्षरों के लिए एक ही प्रक्रिया को दोहराएं, से लेकर 97के रूप में aकरने के लिए 122के रूप में z

void secret(String s) {
    for (char c : s.toCharArray()) {
        System.out.print((char)(c == 32 ? c : c < 89 ? c + 2 : c < 91 ? c - 24 : c < 121 ? c + 2 : c - 24));
    }
}

1

शक्ति कोशिका

$chars = [int]('a')[0]..[int]('z')[0] | %{ [char]$_, [char]::ToUpper([char]$_) }

$y = $args[0].ToCharArray() | %{
    $idx = $chars.indexOf($_);
    if ($idx -ge 0) {
        $chars[($idx + 4) % 52]
    } else  {
        $_
    } 
}

-join [char[]]$y

आउटपुट:

PS C:\Temp> .\z.ps1 "Today is a great day"
Vqfca ku c itgcv fca
PS C:\Temp>


1

अजगर ३

मुझे लगता है कि मैं इस सवाल को काफी समझ नहीं पाया, लेकिन फिर भी:

alphabet = "abcdefghijklmnopqrstuvwxyz"
rot = alphabet[2:] + alphabet[:2]
rot = rot + rot.upper()
alphabet = alphabet + alphabet.upper()

def encode_letter(letter):
    return rot[alphabet.index(letter)]

def encode_word(word):
    return "".join(encode_letter(letter) for letter in word)

def encode_string(string):
    return " ".join(encode_word(word) for word in string.split())

print("Output: " + encode_string(input("Input: ")))

1

अजगर 2.x

एक सुविधा समृद्ध पायथन समाधान पर एक प्रयास।

विशेषताएं:

  • एक हुकुम का उपयोग
  • एक गोलाकार तरीके से सूची को संभालना, ताकि shift=2विविध हो सकें
  • जब आप जानते हैं कि आप इसे समझने के लिए इसका उपयोग कर सकते हैं shift(सिर्फ माइनस का उपयोग करें), यह आपको अपने आउटपुट का परीक्षण करने की अनुमति भी देगा।
  • "शिफ्टिंग स्कोप्स" जोड़ने की क्षमता - स्कोप्स जिसमें आप साइकिल चलाते हैं
  • विकल्प strictअपरिभाषित वर्णों के लिए हो सकता है , या बस अपरिभाषित इनपुट वर्ण लौटा सकता है।
  • एक गुप्त भाषा कोई निशान नहीं छोड़ती है;)

यहाँ जाता हैं:

# Shifting scopes
lower_case = map(chr, range(97, 123))
upper_case = map(chr, range(65, 91))
space = [" "] # space will always be transformed to space

def secret(instring, shift, scopes, strict=False):
    def buildTranslationDict(scores):
        translation_dict = {}
        for scope in scopes: 
            for index in range(len(scope)): 
                translation_dict[scope[index]] = scope[(index+shift) % len(scope)]
        return translation_dict 
    translation_dict = buildTranslationDict(scopes)
    # Use the translation dictionary to transform input
    output = ""        
    for char in instring:
        if strict:
           output += translation_dict[char]   # will crash if unexpected char
        else:
            try:    
               output += translation_dict[char]
            except: 
               output += char
    return output    

सबूत:

secret(instring="Today is a great day", shift=2, scopes=[lower_case, upper_case, space])
'Vqfca ku c itgcv fca'

क्या आप समझ सकते हैं 'Wrpruurz lv qrw edg hlwkhu!':)?


बस जिज्ञासु, क्या आप इस अतिरिक्त "सख्त" सुविधा को "बिंदु पर नहीं " जोड़ने पर विचार करते हैं ?
पास्कलवीकूटेन

इससे कोड की 6 लाइनें
बच जाएंगी

1
क्या आप खुद से बात कर रहे हैं या मैं कुछ याद कर रहा हूं? हटाई गई टिप्पणियों की तरह?
टिमटेक

1
हाँ हटा दिया गया है, कृपया अपनी टिप्पणी को भी न हटाएं ...
पास्कलवूटेन

0

विस्तारित ब्रेनफक

चूंकि यह एक लोकप्रियता प्रतियोगिता है, इसलिए मैंने इसे ईबीएफ के रूप में पालन करने में आसान होने के इरादे से लिखा है। यह भारी टिप्पणी की गई है और मैंने प्रोग्राम प्रवाह को और अधिक शाब्दिक बनाने के लिए जानबूझकर मैक्रोज़ का उपयोग किया है।

संभवतः सबसे कठिन बात यहाँ मुख्य स्विच है क्योंकि ईबीएफ के पास ऐसा करने का कोई विशेष साधन नहीं है, इसलिए यह वास्तव में कोई सरल नहीं है कि चर और संतुलन कोष्ठक को छोड़कर यह ब्रेनफैक में कैसे होगा।

;;;; rot2.ebf : Perform rot2 on ascii text
;;;; Usage: bf ebf.bf < rot2.ebf > rot2.bf
;;;;        echo "Today is a great day" | bf rot2.bf
;;;;        # => Vqfca ku c itgcv fca
;;;;
;;;; BF interpreter/Compiler requirement: 
;;;; Wrapping cells at any size (allmost all of them do)
;;;;


;;; Memory map  
:tmp    ; a temporary cell used for the read routine
:input  ; a copy of the input for output purposes
:switch ; a copy of the input for the switch statements
:flag   ; flag to indicate the predicate has been processed or not

;;; Macros
;; Ultracompatible read
;; supports EOF 0, -1 and no change
{read_tmp 
  $input+ 
  $tmp(-),
  [+[-$input-]] ; blanks for all EOFs
  $switch [
    @input &clear
    $switch
  ]
}

;; for the switch we need
;; to do destructive testing
;; and we need to preserve the
;; original as well. 
{copy_input 
  $tmp(-$input+$switch+)
}

;; clears the cell
{clear (-)}

;; prints current cell
{print .}

;;; Main proram
;;; flow starts here
&read_tmp
while $tmp not eof
(
  &copy_input
  $flag+
  $switch 10-(22-(
    ;; not linefeed/space
    $switch 57-(-(31-(-(
       ;; default: not wrapping
       &clear
       $flag-
       $input 2+))))
    $flag (-
       ;; wrapping
       $input 24-)))
  $flag &clear
  $input &print &clear
  &read_tmp
)
;;; End

0

जावास्क्रिप्ट

var STR = "Today is a great day";
//so i can replace chars at a index in the string
String.prototype.replaceAt=function(i, char) {
    var a = this.split("");
    a[i] = char;
    return a.join("");
}

function secretIt( str ){
    for( var i = 0; i < str.length; i++ ) {
        var c = str.charCodeAt( i );
        /**
        * check for spaces first
        * check if get outside of the letter range for both lower and upper
        * if we dont go then were good
        * if so go back 26 chars
        */
        str = str.replaceAt( i, String.fromCharCode( ( c == 32 ) ? c : ( ( c = c + 2 ) > 91 && c < 97 || c < 123 ) ? c : c - 26 ) ) ;
    }
    return str;
}

console.log( secretIt( "Qsncp qcapcr ambc" ), ' ' , secretIt( STR ));


0

जावा

void sl(String s){
    for (char c: s.toCharArray()){
        char l = Character.toLowerCase(c);
        System.out.print((char)(c + (l < 'y'? l < 'a'? 0: 2: -24)));
    }
}

मैं कहूंगा कि यह इस उत्तर से बहुत मिलता
जुलता है

... और मैं आपसे सहमत हूँ: P
rodrigopc

0

सी #, 163

हां, यह कोड-गोल्फ नहीं है। मैं वैसे भी सबसे कम समय के लिए गया (या कम से कम, इस पर पहला वार किया)

using System.Linq;class P{static void Main(string[]a){System.Console.WriteLine(string.Concat(a[0].Select(c=>(char)(c==32?c:c<89?c+2:c<91?c-24:c<121?c+2:c-24))));}}

प्रारूपित:

using System.Linq;
class P
{
    static void Main(string[] a)
    {
        System.Console.WriteLine(string.Concat(a[0].Select(c => (char)(c == 32 ? c : c < 89 ? c + 2 : c < 91 ? c - 24 : c < 121 ? c + 2 : c - 24))));
    }
}

हां, मुझे ufis के उत्तर पर एक नज़र थी ।


0

सी # 5 केबी

(381 वर्ण)

391

using System;
namespace WinHelper {
    class P {
        static void Main(string[] args) {
            char[] f =  "abcdefghijklmnopqrstuvwxyz ".ToCharArray();
            char[] g =  "cdefghijklmnopqrstuvwxyzab ".ToCharArray();

            foreach (char c in Console.ReadLine().ToCharArray().ToLower()) 
                Console.Write(g[Array.FindIndex(f, a => a == c)]);
        }
    }
}

संकलित आकार (5KB) कोई फर्क नहीं पड़ता। के लिए कोड गोल्फ की संख्या वर्ण (sourcecode की) आम तौर पर मायने रखता है, लेकिन जब से इस विशेष चुनौती एक है लोकप्रियता प्रतियोगिता और नहीं कोड गोल्फ वर्ण / आकार सभी पर बात नहीं करता है। popularity contestचुनौती के नीचे बैज पर अपने माउस को घुमाएं (आप एक टूलटिप को यह समझाते हुए देखेंगे: " एक लोकप्रियता-प्रतियोगिता एक प्रतियोगिता है जहां सबसे अधिक उत्थान के साथ सही उत्तर जीतता है,usually the most creative answer ")।
RobIII

इसके अलावा, यह चुनौती के उदाहरण इनपुट पर क्रैश होता है Today is a great dayक्योंकि यह अपरकेस अक्षरों का समर्थन नहीं करता है।
Rob24

0

बैश, 8 अक्षर

... यदि आप bsdgames पैकेज स्थापित करने के लिए होता है! मानक इनपुट से पढ़ता है।

caesar 2

उदाहरण

echo Today is a great day|caesar 2

आउटपुट: Vqfca ku c itgcv fca


0

सी

#include <stdio.h>
char c[100];
int main()
{
gets(c);
char *p=c,x;
while(*p)
{
    x=*p;
    if(x>='a'&&x<='z')
    {
        *p=((*p-'a'+2)%(26)+'a');
    }
    if(x>='A'&&x<='Z')
    {
        *p=((*p-'A'+2)%(26)+'A');
    }

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