Chuyển đổi sang ngôn ngữ bí mật


9

Viết một số mã bằng bất kỳ ngôn ngữ nào nhập chuỗi, chẳng hạn như "Hôm nay là một ngày tuyệt vời" (Lưu ý rằng không có dấu câu) và chuyển đổi nó thành "Ngôn ngữ bí mật". Dưới đây là các quy tắc cho "Ngôn ngữ bí mật".

  • a = c, b = d, c = e và cứ thế (y = a và z = b)
  • phân tách từng từ bằng một khoảng trắng
  • đảm bảo có viết hoa đúng

Thí dụ:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

Đó là một cuộc thi phổ biến. Những người dùng khác nên cho điểm bằng cách tìm kiếm hầu hết mã "đến điểm" nhưng "duy nhất".

THỬ THÁCH: Tôi đang tìm kiếm các ngôn ngữ lập trình không phổ biến và tôi đã tìm thấy một ngôn ngữ có tên là Piet ( esolang ). Tôi thách thức bất cứ ai viết nó bằng ngôn ngữ này.


Có nên như x=z, y=a, z=bvậy không?
r3mainer

bạn đúng "duh" :)
Vik P

3
Tôi đã bối rối cho đến khi tôi nhận ra a=ca -> c.
Justin

6
Nói cách khác, ROT2
Tobias

2
Cả rot13 và rot2 đều là mật mã Caesar với các phím khác nhau (13 và 2).
Sylwester

Câu trả lời:


18

Smalltalk (Smalltalk / X), 29 27 ký tự

Tôi may mắn - nó đã có trong lớp String:

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

thêm I / O, điều này làm cho nó:

(Stdin nextLine rot:2)print

trong tinh thần ví dụ khó hiểu của tay nắm cửa dưới đây, làm thế nào về:

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

2
Tôi chưa bao giờ nghĩ rằng tôi sẽ thấy một giải pháp Smalltalk!
Bàn chải đánh răng

13

Ruby, phiên bản bị xáo trộn (có kèm theo lời bình luận!)

Tôi đề nghị đọc toàn bộ; Tôi thấy nó khá thú vị;)

$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

Gợi ý về cách thức hoạt động của nó (spoilers, hover để hiển thị):

Mã này xây dựng một chuỗi và sau đó đánh giá nó.

Nó sử dụng const_missingđể xây dựng chuỗi ký tự theo ký tự.

Chuỗi nó kết thúc xây dựng là gets.tr'A-Za-z','C-ZABc-zab'.


Bài bình luận đọc giống như một số cuộc trò chuyện trong câu hỏi này: codegolf.stackexchange.com/questions/20914/who-is-this-chatbot/ phỏng

13

Bản thảo

HQ yêu cầu, kể từ bây giờ, tất cả các đại lý sẽ chỉ nhận được thông tin liên lạc ở dạng in (vì các kênh điện tử tỏ ra quá không đáng tin cậy) bằng cách sử dụng phông chữ tuyệt mật đặc biệt. Bạn có trách nhiệm đưa quy trình tuyệt mật này vào phần mở đầu của phần mềm in của chúng tôi:

/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

Và chỉ phông chữ đó được cho phép, ví dụ:

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

Và đó là những gì nó in: nhập mô tả hình ảnh ở đây


11

bash

Cổ điển.

tr A-Za-z C-ZABc-zab

Thí dụ:

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

Tôi nghĩ bạn không cần báo giá.
bến tàu

@marinus Bạn nói đúng, tôi sẽ thay đổi nó.
daniero

5

DFSORT (Chương trình sắp xếp máy tính lớn của IBM)

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

Không có câu lệnh điều khiển SORT nào có thể bắt đầu trong cột một.

Để phần trên tự hoạt động, bạn phải thay đổi bảng dịch thay thế cài đặt mặc định, để bù tất cả các giá trị cho chữ in hoa và chữ thường, bao quanh hai chữ cái cuối cùng.

Nếu không thay đổi bảng mặc định, nó sẽ yêu cầu một câu lệnh ALTSEQ liệt kê tất cả các cặp giá trị hex cần thiết (từ mã hex-hex ngay sau mã-hex, mỗi cặp giá trị hex được phân tách bằng dấu phẩy):

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

Vì vậy, để có được chữ viết hoa từ EBCDIC A đến C và B sang D:

MÃ SỐ ALTSEQ = (C1C3, C2C4)

Đối với toàn bộ, tất nhiên, đó sẽ là rất nhiều kiểu gõ dễ bị lỗi, do đó, bạn sẽ sử dụng một bước SORT khác để tạo thẻ điều khiển cho bước này và để SORT đọc chúng từ bộ dữ liệu được tạo bởi bước mới đó.

Tất nhiên, đối với bất kỳ ngôn ngữ nào hỗ trợ "bảng dịch", việc thay đổi bảng dịch sẽ dễ dàng như việc thay đổi bảng dịch. Chương trình COBOL tuyệt vời, với một Codepage cụ thể, và nó có thể được thực hiện trong một dòng mã thủ tục COBOL (cộng với các dòng bắt buộc của COBOL đi kèm với mọi thứ ... không quá nhiều trong trường hợp cụ thể này).

Ồ, 1,80 là "hình ảnh thẻ" sẽ chứa văn bản. Có lẽ tất cả đều viết hoa trong lần chạy đầu tiên ...


+1. Sử dụng DFSORT cho ROT2 thực sự độc đáo.
Abhijit

3

C, 75 byte

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

Thí dụ:

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

giả sử EOF là -1, bạn có thể sử dụng bitwise không ~(c=getchar())để lưu 1 char
user12205

và vì câu hỏi nói rằng không có dấu câu nào, ký tự không phải chữ cái duy nhất là khoảng c-32
trắng

Đây là một cuộc thi phổ biến và không phải là môn đánh gôn
Mhmd

Code golf là phản đối phổ biến bây giờ?
Desty

@ user689 bạn nói đúng, xin lỗi tôi đã không đọc kỹ câu hỏi. Vì mã này được viết trong một dòng duy nhất với toán tử ternary và không int, và thậm chí một số char được cung cấp, bằng cách nào đó tôi cho rằng đó là mã golf. Lấy làm tiếc.
dùng12205

3

Con trăn

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

Đầu ra:

rfc ucyrfcp gq tcpw lgac rmbyw


(1) Đó là +3, phải không? (2) Bạn có thể nội tuyến rất nhiều thứ để làm cho nó phức tạp hơn. (đó dường như là một xu hướng ở đây)
Simon Kuang

b = a[2:] + a[:2]sẽ ít bị lỗi đánh máy hơn và dường như không cần phải chuyển đổi chuỗi athành mộtlist
Tobias Kienzler

oh, và c = dict(zip(a,b)). Và exceptkhông nên quá chung chung, hãy sử dụng mộtexcept KeyError
Tobias Kienzler

strnối là siêu chậm. Tạo một listvà tham gia chúng cùng nhau sẽ tốt hơn nhiều.
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

Không phải là ngắn nhất mặc dù!

Ví dụ trực tiếp: 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);

Ghi chú:

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

3

TI-Basic (ngôn ngữ chạy trên máy tính vẽ đồ thị 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  

Đây là một số phần mềm mã hóa đẹp (dành cho TI-83). Theo ti-83, ý tôi là bất kỳ máy tính nào trong họ ti-83 hoặc ti-84. "->" có nghĩa là "CỬA HÀNG" được truy cập bởi "STO>"


3

Hồng ngọc 40 32

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

cập nhật (như được thấy từ giải pháp bash danieros):

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

3

Java, nó thực sự dễ hiểu.

Tôi biết rằng bất cứ điều gì có khoảng trắng và dấu ngoặc đơn đều có một thời gian khó khăn với CG, nhưng đây là một cảnh quay.

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

Có những cuộc thi riêng cho mã obfuscating, nhưng tôi cũng có thể làm cho tôi vô lý.

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

Điều gì với tất cả các ý kiến, hamster của tôi có thể hiểu điều này.


2

Tôi nghĩ rằng tôi sẽ ROT2 nó!

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

Tôi đã nghĩ về một cái gì đó như thế lúc đầu, nhưng tôi chưa bao giờ nghĩ đến [A-z]!
Bàn chải đánh răng

2

Haskell

Đây là một triển khai dựa trên ống kính. Tôi đang sử dụng Isođể thể hiện sự đồng hình giữa văn bản thông thường và văn bản được chuyển đổi thành ngôn ngữ bí mật. Trừ khi bạn cung cấp --fromtùy chọn, đầu vào được chuyển đổi thành ngôn ngữ bí mật. Nếu --fromtùy chọn được cung cấp, chuyển đổi ngược lại được thực hiện.

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)

Ví dụ:

$ ./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;
 }

bạn có thể tiết kiệm rất nhiều mã bằng cách sử dụng số học modulu trên các ký tự ...
blabla999

@ blabla999 đây là một cuộc thi phổ biến và không phải là môn đánh gôn
Mhmd

1
xin lỗi - không có ý xúc phạm Tôi bỏ qua điều đó.
blabla999

1

EcmaScript 6:

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

EcmaScript, kẻ thù đã phá hủy của tôi
Cilan

1

JAVA

32spacevì vậy chúng tôi in ra như là
88Xđể bất cứ điều gì ít hơn 89di chuyển lên 2 nhân vật
90Zđể bất cứ điều gì ít hơn 91di chuyển xuống 24 ký tự (với bất cứ điều gì ít hơn 89đã được xử lý như vậy chỉ 8990hiệu quả)
Lặp lại tương tự quá trình cho chữ thường, từ 97khi ađến 122như 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

Quyền hạn

$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

Đầu ra:

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

1

PHP

Giải pháp này khá nhàm chán:

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

1

Con trăn 3

Tôi nghĩ rằng tôi đã không hiểu câu hỏi, nhưng dù sao:

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

Một nỗ lực tại một giải pháp Python phong phú.

Đặc trưng:

  • việc sử dụng một lệnh
  • xử lý danh sách theo cách tuần hoàn, để shift=2có thể thay đổi
  • bạn cũng có thể sử dụng nó để giải mã khi bạn biết shift(chỉ cần sử dụng dấu trừ), nó cũng sẽ cho phép bạn kiểm tra đầu ra của mình.
  • khả năng thêm "phạm vi dịch chuyển" - phạm vi mà bạn xoay vòng
  • tùy chọn hoặc là strictcho các ký tự không xác định hoặc chỉ trả về ký tự đầu vào không xác định.
  • một ngôn ngữ bí mật không để lại dấu vết;)

Đây là:

# 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    

Bằng chứng:

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

Bạn có thể giải mã 'Wrpruurz lv qrw edg hlwkhu!':)?


Chỉ tò mò, bạn có xem xét thêm tính năng "nghiêm ngặt" bổ sung này "không vào điểm" không?
PascalVKooten

Nó sẽ lưu 6 dòng mã ...
PascalVKooten

1
Bạn đang nói chuyện với chính mình hay tôi đang thiếu một cái gì đó? Thích xóa bình luận?
TimTech

1
Yup đã xóa, vui lòng không xóa bình luận của bạn ...
PascalVKooten 17/214

0

BrainFuck mở rộng

Vì đây là một cuộc thi phổ biến, tôi đã viết bài này với mục đích dễ theo dõi như EBF có thể. Nó đã nhận xét rất nhiều và tôi đã cố tình sử dụng các macro để làm cho chương trình trôi chảy hơn.

Có lẽ điều khó khăn nhất ở đây là công tắc chính vì EBF không có bất kỳ phương tiện đặc biệt nào để thực hiện nó nên thực tế không đơn giản hơn cách người ta sẽ làm điều đó trong BrainFuck ngoại trừ các biến và cân bằng dấu ngoặc đơn.

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

Vâng, đây không phải là golf-code. Dù sao tôi cũng đi ngắn nhất (hoặc ít nhất, đã thực hiện cú đâm đầu tiên vào nó)

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

Định dạng:

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

Vâng, tôi đã có một cái nhìn vào câu trả lời của ufis .


0

C # 5KB

(381 ký tự)

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

Kích thước biên dịch (5KB) không thành vấn đề. Đối với môn đánh gôn , số lượng ký tự (của mã nguồn) thường được tính, nhưng vì thử thách đặc biệt này là một cuộc thi phổ biến và không phải là môn đánh gôn, nên ký tự / kích thước không quan trọng. Di chuột qua popularity contesthuy hiệu bên dưới thử thách (bạn sẽ thấy một chú giải công cụ giải thích: " Cuộc thi phổ biến là một cuộc thi trong đó câu trả lời đúng với hầu hết các chiến thắng,usually the most creative answer ").
RobIII

Ngoài ra, nó gặp sự cố với đầu vào ví dụ của thử thách Today is a great dayvì nó không hỗ trợ chữ in hoa.
RobIII

0

Bash, 8 ký tự

... Nếu bạn tình cờ cài đặt gói bsdgames! Đọc từ đầu vào tiêu chuẩn.

caesar 2

Thí dụ

echo Today is a great day|caesar 2

Đầu ra: 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);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.