秘密の言語への変換


9

「今日は素晴らしい日」などの文字列を入力する任意の言語でコードを記述し(句読点はありません)、それを「秘密の言語」に変換します。ここに「秘密の言語」のルールがあります。

  • a = c、b = d、c = eなど(y = aおよびz = b)
  • 各単語をスペースで区切ります
  • 適切な大文字が使用されていることを確認してください

例:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

人気コンテストです。他のユーザーは、ほとんどの「ポイントに」まだ「ユニークな」コードを探すことによってポイントを与えるべきです。

課題:珍しいプログラミング言語を探していたところ、Pietesolang)という言語を見つけました。私は誰でもこの言語でそれを書くように要求します。


そうじゃないのx=z, y=a, z=b
r3mainer 2014

あなたは正しい「だ」:)
Vik P

3
私が実現するまで私は混乱していたa=cですa -> c
ジャスティン

6
つまり、ROT2 it
Tobias Kienzler

2
rot13とrot2はどちらも、キーが異なるCaesar暗号です(13と2)。
Sylwester 2014

回答:


18

Smalltalk(Smalltalk / X)、29 27文字

私は幸運です-それはすでにStringクラスにあります:

'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
Smalltalkソリューションが見つかるとは思いもしませんでした。
歯ブラシ

13

Ruby、難読化版(解説付き!)

全体を読むことをお勧めします。私はそれがかなり面白いと思います;)

$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

追記

HQは、今後はすべてのエージェントが特別なトップシークレットフォントを使用して(電子チャネルの信頼性が低すぎることが判明したため)印刷された形式でのみ通信を受信することを要求します。この極秘手順を弊社の印刷ソフトウェアのプロローグに含めるのはあなたの責任です:

/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

私はあなたが引用符を必要としないと思います。
マリナス14

@marinusそうです、私が変更します。
daniero 14

5

DFSORT(IBMメインフレーム分類プログラム)

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

1列目からSORT制御ステートメントを開始することはできません。

上記を単独で機能させるには、デフォルトのインストール代替変換テーブルを変更して、大文字と小文字のすべての値をオフセットし、最後の2文字を折り返す必要があります。

デフォルトのテーブルを変更しないと、必要な16進値のペアをすべてリストするALTSEQステートメントが必要になります(from-hex-codeの直後にto-hex-codeが続き、各16進値のペアはコンマで区切られています)。

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

したがって、大文字のEBCDIC AからCおよびBからDを取得するには、次のようにします。

ALTSEQ CODE =(C1C3、C2C4)

全体として、それはもちろんエラーが発生しやすい入力になるので、別のSORTステップを使用してこのステップのコントロールカードを生成し、SORTにその新しいステップで作成されたデータセットからそれらを読み取らせます。

もちろん、「変換テーブル」をサポートする言語であれば、変換テーブルを変更するのと同じくらい簡単です。特定のコードページを備えた素敵なCOBOLプログラム。これは、1行のCOBOLプロシージャコードで実行できます(さらに、すべてに対応するCOBOLの必須行...この特定のケースではそれほど多くありません)。

おお、1,80はテキストを含む「カード画像」です。おそらく最初の実行ではすべて大文字です...


+1。DFSORT for ROT2を使用することは本当にユニークです。
Abhijit 2014

3

C、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())1文字を節約できません
user12205

質問では句読点がないと言っているので、アルファベット以外の唯一の文字はスペースなので、c-32代わりにそれをテストすると、6文字節約できます
user12205

これは人気のコンテストであり、コードゴルフではありません
Mhmd

コードゴルフは今の人気と正反対ですか?
Desty、2014

@ user689あなたの言う通り、申し訳ありませんが質問を注意深く読みませんでした。このコードは、3項演算子を使用して1行で記述されてintおり、charカウントも指定されているため、なんとかしてコードGolfであると想定しました。ごめんなさい。
user12205 2014

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


(1)+3だよね?(2)多くのものをインライン化してより複雑にすることができます。(ここでは傾向のようです)
Simon Kuang

b = a[2:] + a[:2]タイプミスが少なくなり、文字列aをa に変換する必要がないようですlist
Tobias Kienzler

ああ、そしてc = dict(zip(a,b))。そしてexcept使用するので、汎用的であってはならないexcept KeyError
トビアスKienzler

str連結は非常に遅いです。を作成しlist、それらを一緒に結合する方がはるかに良いでしょう。
yegle、2014

3

JavaScript

// 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

PHP

でも最短ではありません!

ライブの例: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ファミリーの計算機を意味します。「->」は「STO>」によってアクセスされる「STORE」を意味します


3

ルビー 40 32

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

更新(danieros bashソリューションから見られる):

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

3

Java、それは実際に理解可能です。

空白や括弧が付いているものはすべてCGに苦労することは知っていますが、ここではその一例を示します。

    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

Javascript

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しようと思います!

Javascript

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]
歯ブラシ2014

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

C

    #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;
 }

charsでmodulu演算を使用すると、多くのコードを節約できます...
blabla999

@ blabla999これは人気のコンテストであり、コードゴルフではありません
Mhmd

1
申し訳ありません-気分を害するものではありません。見落としました。
blabla999 2014

1

EcmaScript 6:

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

EcmaScript、私の進化した古い敵
Cilan

1

JAVA

32spaceあるとして、我々はそれをプリントアウトして
88いるX未満は何もして892文字まで移動し
90ているZ未満は何もして9124文字ダウン移動(何未満89すでにこれだけ扱い8990効果的)
に至るまで、小文字のための同じプロセスを繰り返します97ようa122など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

PHP

このソリューションはかなり退屈です:

echo strtr('Today is a great day','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','CDEFGHIJKLMNOPQRSTUVWXYZABcdefghijklmnopqrstuvwxyzab');

1

Python 3

私は質問を完全に理解していなかったと思いますが、とにかく:

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

Python 2.x

機能豊富なPythonソリューションの試み。

特徴:

  • 辞書の使用
  • リストを循環的に処理するので、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!':) 解読できますか?


気になるだけですが、この「厳密な」機能を要らない」ように追加することを検討しますか?
PascalVKooten 2014

6行のコードを節約できます...
PascalVKooten 2014

1
自分と話しているのですか、それとも何か聞き逃していますか?削除されたコメントが好きですか?
Timtech 2014

1
削除しました。コメントも削除しないでください...
PascalVKooten

0

拡張BrainFuck

これは人気のコンテストなので、EBFと同じくらい簡単に理解できるように書いています。それは非常にコメントされており、私は意図的にマクロを使用してプログラムの流れをよりリテラルにしました。

おそらくここで最も難しいのはメインスイッチです。EBFには特別な方法がないため、変数と括弧のバランスを除いて、BrainFuckでそれを行うのと同じくらい簡単です。

;;;; 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

Javascript

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)));
    }
}

これはこの答えに非常に似ていると思い
user12205

...そして私はあなたに同意します:P
rodrigopc

0

C#、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

C# 5KB

(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)は重要ではありません。以下のためのコードゴルフの数文字(ソースコードの)通常のカウントが、この特定の課題となっているので、人気コンテストではなく、コードゴルフ文字/サイズはまったく関係ありません。popularity contestチャレンジの下にあるバッジの上にマウスを置きusually the most creative answerます(それを説明するツールチップが表示されます:「人気コンテストは、最も多くの賛成票を獲得した正解が勝つ競争です。」)。
RobIII 2014

また、Today is a great day大文字をサポートしていないため、チャレンジの入力例でクラッシュします。
RobIII 2014

0

バッシュ、8文字

...たまたまbsdgamesパッケージがインストールされている場合!標準入力から読み取ります。

caesar 2

echo Today is a great day|caesar 2

出力: Vqfca ku c itgcv fca


0

C

#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);
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.