Konversi ke Bahasa Rahasia

9

Tulis beberapa kode dalam bahasa apa pun yang memasukkan string seperti "Hari ini adalah hari yang menyenangkan" (Perhatikan bahwa tidak ada tanda baca) dan mengubahnya menjadi "Bahasa Rahasia". Berikut adalah aturan untuk "Bahasa Rahasia".

  • a = c, b = d, c = e dan seterusnya (y = a dan z = b)
  • pisahkan setiap kata dengan spasi
  • pastikan ada huruf besar yang sesuai

Contoh:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

Ini adalah kontes popularitas. Pengguna lain harus memberikan poin dengan mencari kode "to the point" namun "unik".

TANTANGAN: Saya mencari-cari bahasa pemrograman yang tidak umum dan saya menemukan bahasa yang disebut Piet ( esolang ). Saya menantang siapa pun untuk menulisnya dalam bahasa ini.

Vik P
sumber
Bukankah seharusnya begitu x=z, y=a, z=b?
r3mainer
Anda benar "ya" :)
Vik P
3
Saya bingung sampai aku menyadari a=cyaitu a -> c.
Justin
6
Dengan kata lain, ROT2 itu
Tobias Kienzler
2
Baik rot13 dan rot2 keduanya cipher Caesar dengan kunci yang berbeda (13 dan 2).
Sylwester

Jawaban:

18

Smalltalk (Smalltalk / X), 29 27 karakter

Saya beruntung - ini sudah ada di kelas String:

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

menambahkan I / O, ini membuatnya:

(Stdin nextLine rot:2)print

dalam semangat contoh gagang pintu yang dikaburkan di bawah ini, bagaimana dengan:

Parser evaluate:('(Uvfkp pgzvNkpg tqv:2)rtkpvPN' rot:-2)
blabla999
sumber
2
Saya tidak pernah berpikir saya akan melihat solusi Smalltalk!
Sikat gigi
13

Ruby, edisi yang dikaburkan (termasuk komentar!)

Saya sarankan membaca semuanya; Saya merasa sangat lucu;)

$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

Petunjuk tentang cara kerjanya (spoiler, arahkan kursor ke pertunjukan):

Kode ini membangun string dan kemudian mengevaluasinya.

Ini digunakan const_missinguntuk membangun karakter string dengan karakter.

String yang akhirnya dibangun adalah gets.tr'A-Za-z','C-ZABc-zab'.

Gagang pintu
sumber
Komentar berbunyi seperti beberapa obrolan dalam pertanyaan ini: codegolf.stackexchange.com/questions/20914/who-is-this-chatbot/…
13

Nota bene

HQ mensyaratkan, bahwa mulai sekarang semua agen akan menerima komunikasi dalam bentuk cetakan saja (karena saluran elektronik terbukti terlalu tidak dapat diandalkan) menggunakan font rahasia khusus. Adalah tanggung jawab Anda untuk memasukkan prosedur rahasia ini ke dalam prolog perangkat lunak pencetakan kami:

/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

Dan hanya font yang diizinkan, misalnya:

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

Dan itulah yang dicetak: masukkan deskripsi gambar di sini

pengguna2846289
sumber
11

pesta

Klasik.

tr A-Za-z C-ZABc-zab

Contoh:

$ tr A-Za-z C-ZABc-zab <<< "Today is a great day"
Vqfca ku c itgcv fca
daniero
sumber
Saya pikir Anda tidak perlu tanda kutip.
marinus
@marinus Kamu benar, aku akan mengubahnya.
daniero
5

DFSORT (program penyortiran Mainframe IBM)

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

Tidak ada pernyataan kontrol SORT yang dapat dimulai pada kolom satu.

Agar hal di atas berfungsi sendiri, Anda harus mengubah tabel terjemahan alternatif instalasi default, untuk mengimbangi semua nilai untuk huruf besar dan kecil, membungkus dua huruf terakhir.

Tanpa mengubah tabel default, itu akan memerlukan pernyataan ALTSEQ yang mencantumkan semua pasangan nilai hex yang diperlukan (dari-hex-code segera diikuti oleh ke-hex-code, setiap pasang nilai hex dipisahkan dengan koma):

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

Jadi untuk mendapatkan huruf besar EBCDIC A ke C dan B ke D:

KODE ALTSEQ = (C1C3, C2C4)

Secara keseluruhan, tentu saja akan banyak mengetik kesalahan-rawan, jadi Anda akan menggunakan langkah SORT lain untuk menghasilkan kartu kontrol untuk langkah ini, dan biarkan SORT membacanya dari set data yang dibuat oleh langkah baru itu.

Tentu saja, untuk bahasa apa pun yang mendukung "tabel terjemahan", semudah mengubah tabel terjemahan. Program COBOL yang bagus, dengan Codepage tertentu, dan itu bisa dilakukan dalam satu baris kode prosedur COBOL (ditambah baris COBOL wajib yang sesuai dengan segalanya ... tidak terlalu banyak dalam kasus khusus ini).

Oh, 1,80 adalah "gambar kartu" yang akan berisi teks. Mungkin semuanya dalam huruf besar di jalankan pertama ...

Bill Woodger
sumber
+1. Menggunakan DFSORT untuk ROT2 benar-benar unik.
Abhijit
3

C, 75 byte

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

Contoh:

$echo "Today is a great day" |./a.out
Vqfca ku c itgcv fca
r3mainer
sumber
dengan asumsi EOF adalah -1 Anda dapat menggunakan bitwise ~(c=getchar())untuk tidak menyimpan 1 karakter
user12205
dan karena pertanyaannya mengatakan tidak ada tanda baca, satu-satunya karakter non-alfabet adalah ruang, jadi Anda bisa mengujinya dengan c-32, yang menghemat 6 karakter
user12205
Ini adalah kontes popularitas dan bukan kode-golf
Mhmd
Golf kode bertentangan dengan popularitas sekarang?
Desty
@ user689 Anda benar, maaf saya tidak membaca pertanyaan dengan cermat. Karena kode ini ditulis dalam satu baris dengan operator ternary dan tidak int, dan bahkan penghitungan char disediakan, entah bagaimana saya berasumsi bahwa itu adalah kode golf. Maaf.
user12205
3

Python

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

Keluaran:

rfc ucyrfcp gq tcpw lgac rmbyw

Dokter
sumber
(1) Benar +3, kan? (2) Anda bisa mengatur banyak hal untuk membuatnya lebih rumit. (yang tampaknya menjadi tren di sini)
Simon Kuang
b = a[2:] + a[:2]akan kurang rentan terhadap typo, dan tampaknya tidak perlu mengubah string amenjadilist
Tobias Kienzler
oh, dan c = dict(zip(a,b)). Dan exceptseharusnya tidak terlalu generik, gunakanexcept KeyError
Tobias Kienzler
strRangkaian sangat lambat. Buat listdan bergabung bersama mereka akan jauh lebih baik.
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
}
wolfhammer
sumber
3

PHP

Bukan yang terpendek sekalipun!

Contoh langsung: 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);

catatan:

ord('`') = ord('a') - 1
ComFreek
sumber
3

TI-Basic (bahasa yang menggunakan kalkulator grafik 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  

Ini adalah beberapa perangkat lunak enkripsi yang bagus (untuk TI-83). Maksud saya ti-83 adalah kalkulator dalam keluarga ti-83 atau ti-84. "->" berarti "TOKO" diakses oleh "STO>"

c4ooo
sumber
3

Rubi 40 32

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

pembaruan (seperti yang terlihat dari solusi danieros bash):

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

Java, sebenarnya bisa dimengerti.

Saya tahu bahwa apa pun dengan spasi putih dan tanda kurung memiliki waktu yang sulit di CG, tapi ini satu kesempatan.

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

Ada kontes terpisah untuk kode yang membingungkan, tetapi saya juga bisa membuat saya konyol.

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

Apa dengan semua komentarnya, hamster saya bisa mengerti ini.

Cilan
sumber
2

Saya pikir saya akan ROT2 itu!

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'));
Cilan
sumber
Saya memikirkan sesuatu seperti itu pada awalnya, tetapi saya tidak pernah memikirkannya [A-z]!
Sikat gigi
2

Haskell

Berikut ini adalah implementasi berbasis lensa. Saya menggunakan Isountuk mewakili isomorfisme antara teks biasa dan teks yang dikonversi ke bahasa rahasia. Kecuali Anda memberikan --fromopsi, input dikonversi ke bahasa rahasia. Jika --fromopsi ini diberikan, konversi sebaliknya dilakukan.

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)

Contoh:

$ ./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
David
sumber
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;
 }
Mhmd
sumber
Anda dapat menyimpan banyak kode dengan menggunakan modulu aritmatika pada karakter ...
blabla999
@ blabla999 ini adalah kontes popularitas dan bukan kode-golf
Mhmd
1
maaf - tidak dimaksudkan untuk menyinggung. Saya mengabaikan hal itu.
blabla999
1

EcmaScript 6:

alert(prompt(_='').split(_).map(x=>String.fromCharCode(x.charCodeAt()+(x>' '?x>'x'|x>'X'&x<'['?-24:2:0))).join(_))
Sikat gigi
sumber
EcmaScript, musuh saya yang didelegasikan
Cilan
1

JAWA

32adalah spacejadi kami mencetaknya seperti
88ini Xjadi sesuatu yang kurang dari 89bergerak naik 2 karakter
90adalah Zsehingga apa pun kurang dari 91bergerak turun 24 karakter (dengan sesuatu yang kurang dari 89yang sudah ditangani sehingga hanya 89dan 90efektif)
Ulangi proses yang sama untuk huruf kecil, mulai dari 97sebagai auntuk 122sebagai 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));
    }
}
ufis
sumber
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

Keluaran:

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

PHP

Solusi ini agak membosankan:

echo strtr('Today is a great day','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','CDEFGHIJKLMNOPQRSTUVWXYZABcdefghijklmnopqrstuvwxyzab');
Dabbler yang Layak
sumber
1

Python 3

Saya pikir saya tidak begitu mengerti pertanyaannya, tetapi bagaimanapun juga:

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: ")))
gcq
sumber
1

Python 2.x

Upaya solusi kaya fitur Python.

Fitur:

  • penggunaan dikt
  • menangani daftar secara melingkar, sehingga shift=2 dapat bervariasi
  • Anda juga dapat menggunakannya untuk menguraikan ketika Anda tahu shift (hanya menggunakan minus), itu juga akan memungkinkan Anda untuk menguji output Anda.
  • kemampuan untuk menambahkan "ruang lingkup" - ruang lingkup di mana Anda berputar
  • pilihan untuk menjadi strict untuk karakter yang tidak terdefinisi, atau hanya mengembalikan karakter input yang tidak terdefinisi.
  • bahasa rahasia tidak meninggalkan jejak;)

Ini dia:

# 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    

Bukti:

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

Bisakah Anda menguraikan 'Wrpruurz lv qrw edg hlwkhu!':)?

PascalVKooten
sumber
Hanya ingin tahu, apakah Anda mempertimbangkan untuk menambahkan fitur "ketat" ekstra ini "tidak langsung" ?
PascalVKooten
Ini akan menghemat 6 baris kode ...
PascalVKooten
1
Apakah Anda berbicara kepada diri sendiri atau saya kehilangan sesuatu? Suka komentar yang dihapus?
Timtech
1
Yup dihapus, tolong jangan hapus komentar Anda juga ...
PascalVKooten
0

Extended BrainFuck

Karena ini adalah kontes popularitas, saya telah menulis ini dengan tujuan agar mudah diikuti seperti EBF. Ini banyak dikomentari dan saya sengaja menggunakan makro untuk membuat aliran program lebih literal.

Mungkin hal yang paling sulit di sini adalah saklar utama karena EBF tidak memiliki cara khusus untuk melakukannya sehingga pada kenyataannya tidak lebih sederhana daripada bagaimana seseorang akan melakukannya di BrainFuck kecuali untuk variabel dan menyeimbangkan tanda kurung.

;;;; 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
Sylwester
sumber
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 ));
pembunuh mata-mata
sumber
0

Jawa

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)));
    }
}
rodrigopc
sumber
Saya akan mengatakan ini sangat mirip dengan jawaban ini: codegolf.stackexchange.com/a/21002/12205
user12205
... dan saya setuju dengan Anda: P
rodrigopc
0

C #, 163

Ya, ini bukan kode-golf. Lagipula aku pergi untuk yang terpendek (atau setidaknya, membuat tikaman pertama)

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

Diformat:

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

Ya, saya memang mengintip jawaban ufis .

RobIII
sumber
0

C # 5KB

(381 karakter)

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)]);
        }
    }
}
PauloHDSousa
sumber
Ukuran yang dikompilasi (5KB) tidak masalah. Untuk golf kode , jumlah karakter (dari kode sumber) biasanya diperhitungkan, tetapi karena tantangan khusus ini adalah kontes popularitas dan bukan golf kode , karakter / ukuran karakter tidak penting sama sekali. Arahkan mouse Anda ke popularity contestlencana di bawah tantangan (Anda akan melihat tooltip yang menjelaskannya: " Kontes popularitas adalah kompetisi di mana jawaban yang benar dengan kemenangan terbanyak menang,usually the most creative answer ").
RobIII
Juga, crash pada contoh input tantangan Today is a great daykarena tidak mendukung huruf besar.
RobIII
0

Bash, 8 karakter

... jika Anda memiliki paket bsdgames terinstal! Membaca dari input standar.

caesar 2

Contoh

echo Today is a great day|caesar 2

Keluaran: Vqfca ku c itgcv fca


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