Преобразование в секретный язык


9

Напишите некоторый код на любом языке, который вводит строку, такую ​​как «Сегодня великий день» (обратите внимание, что знаков препинания нет) и преобразует ее в «Секретный язык». Вот правила для «Тайного языка».

  • a = c, b = d, c = e и т. д. (y = a и z = b)
  • разделяйте каждое слово пробелом
  • убедитесь, что есть правильная капитализация

Пример:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

Это конкурс популярности. Другие пользователи должны давать очки, ища наиболее «точечный», но все же «уникальный» код.

ВЫЗОВ: Я искал необычные языки программирования и нашел язык, называемый Piet ( esolang ). Я призываю любого написать это на этом языке.


Не должно ли это быть x=z, y=a, z=b?
r3mainer

Вы правы "Дух" :)
Vik P

3
Я был смущен, пока не понял, что a=cесть a -> c.
Джастин

6
Другими словами, ROT2 это
Тобиас Кинцлер

2
Оба rot13 и rot2 оба являются шифрами Цезаря с разными ключами (13 и 2).
Сильвестр

Ответы:


18

Smalltalk (Smalltalk / X), 29 27 символов

Мне повезло - он уже в классе String:

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

добавив ввод / вывод, это делает это:

(Stdin nextLine rot:2)print

в духе запутанного примера дверной ручки ниже, как насчет:

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

2
Я никогда не думал, что увижу решение Smalltalk!
Зубная щетка

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. Использование DFSORT для ROT2 действительно уникально.
Абхиджит

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

Код гольф сейчас противоположен популярности?
Дести

@ 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


(1) Это +3верно? (2) Вы можете добавить много вещей, чтобы сделать их более сложными. (это, кажется, тенденция здесь)
Симон Куанг

b = a[2:] + a[:2]будет менее подвержен опечаткам, и, похоже, нет необходимости преобразовывать строку aвlist
Тобиас Кинцлер

о, и c = dict(zip(a,b)). И exceptне должно быть таким общим, используйтеexcept KeyError
Тобиас Кинцлер

strконкатенация очень медленная Создать listи объединить их было бы намного лучше.
Yegle

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. «->» означает «STORE», доступный через «STO>»


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

Ява, это на самом деле понятно.

Я знаю, что все с пробелами и круглыми скобками испытывает трудности с компьютерной графикой, но вот пример.

    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]!
Зубная щетка

2

Haskell

Вот реализация на основе линз. Я использую, 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 это конкурс популярности, а не гольф-код
Mhmd

1
извините - не хотел обидеть. Я упустил это из виду.
blabla999


1

ЯВА

32это spaceтак мы выводим его как
88есть , Xтак что меньше , чем 89движется вверх 2 символов
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

Powershell

$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

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

Это спасло бы 6 строк кода ...
PascalVKooten

1
Ты говоришь сам с собой или я что-то упустил? Нравится удаленные комментарии?
Timtech

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

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

Да, я взглянул на ответ УФИ .


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

Скомпилированный размер (5 КБ) не имеет значения. Для code-golf обычно учитывается количество символов (исходного кода), но, поскольку этот конкретный вызов является конкурсом популярности, а не code-golf, размер символов / символов вообще не имеет значения. Наведите указатель мыши на popularity contestзначок под заданием (вы увидите подсказку, объясняющую его: « Конкурс популярности - это соревнование, в котором победит правильный ответ с наибольшим количеством голосовusually the most creative answer »).
RobIII

Кроме того, происходит сбой при вводе примера вызова, Today is a great dayпоскольку он не поддерживает прописные буквы.
RobIII

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 и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.