Konwersja na język tajny

9

Napisz kod w dowolnym języku, który wprowadza ciąg taki jak „Dzisiaj jest wielki dzień” (zauważ, że nie ma interpunkcji) i konwertuje go na „Tajny język”. Oto zasady dotyczące „Tajnego języka”.

  • a = c, b = d, c = e itd. (y = a i z = b)
  • oddziel każde słowo spacją
  • upewnij się, że jest odpowiednio wielkie litery

Przykład:

Input: "Today is a great day"

Output: "Vqfca ku c itgcv fca"

To konkurs popularności. Inni użytkownicy powinni dawać punkty, szukając najbardziej „do rzeczy” jeszcze „unikalnego” kodu.

WYZWANIE: Szukałem niezwykłych języków programowania i znalazłem język o nazwie Piet ( esolang ). Wzywam każdego do napisania tego w tym języku.

Vik P.
źródło
Czy nie powinno tak być x=z, y=a, z=b?
r3mainer
masz rację „duh” :)
Vik P
3
Byłem zdezorientowany, aż zdałem sobie sprawę, a=cIS a -> c.
Justin
6
Innymi słowy, ROT2 it
Tobias Kienzler
2
Zarówno rot13, jak i rot2 są szyframi Cezara z różnymi kluczami (13 i 2).
Sylwester

Odpowiedzi:

18

Smalltalk (Smalltalk / X), 29 27 znaków

Mam szczęście - jest już w klasie String:

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

dodanie I / O powoduje, że:

(Stdin nextLine rot:2)print

w duchu przytłumionego przykładu klamki poniżej, co powiesz na:

Parser evaluate:('(Uvfkp pgzvNkpg tqv:2)rtkpvPN' rot:-2)
blabla999
źródło
2
Nigdy nie myślałem, że zobaczę rozwiązanie Smalltalk!
Szczoteczka do zębów
13

Rubinowe, zaciemnione wydanie (z dołączonym komentarzem!)

Proponuję przeczytać całość; Uważam to za dość zabawne;)

$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

Wskazówki, jak to działa (spoilery, najedź kursorem, aby pokazać):

Ten kod buduje ciąg, a następnie go ocenia.

Używa go const_missingdo budowania łańcucha znak po znaku.

Ciąg, który kończy się, to budowanie gets.tr'A-Za-z','C-ZABc-zab'.

Klamka
źródło
Komentarz brzmi jak niektóre z czatów w tym pytaniu: codegolf.stackexchange.com/questions/20914/who-is-this-chatbot/…
13

Postscriptum

Centrala wymaga, aby odtąd wszyscy agenci otrzymywali komunikaty wyłącznie w formie drukowanej (ponieważ kanały elektroniczne okazały się zbyt zawodne) przy użyciu specjalnej ściśle tajnej czcionki. Twoim obowiązkiem jest włączenie tej ściśle tajnej procedury do prologu naszego oprogramowania do drukowania:

/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

I tylko ta czcionka jest dozwolona, ​​np .:

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

I to właśnie drukuje: wprowadź opis zdjęcia tutaj

użytkownik 2846289
źródło
11

grzmotnąć

Klasyczny.

tr A-Za-z C-ZABc-zab

Przykład:

$ tr A-Za-z C-ZABc-zab <<< "Today is a great day"
Vqfca ku c itgcv fca
daniero
źródło
Myślę, że nie potrzebujesz cytatów.
marinus
@marinus Masz rację, zmienię to.
daniero
5

DFSORT (program do sortowania komputerów mainframe IBM)

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

W kolumnie pierwszej nie można rozpocząć instrukcji sterującej SORT.

Aby powyższe działało samodzielnie, musiałbyś zmienić domyślną alternatywną tabelę tłumaczenia instalacji, aby zrównoważyć wszystkie wartości wielkich i małych liter, owijając się wokół dwóch ostatnich liter.

Bez zmiany domyślnej tabeli wymagałoby to instrukcji ALTSEQ z listą wszystkich wymaganych par wartości szesnastkowych (od kodu szesnastkowego bezpośrednio po kodzie szesnastkowym, każda para wartości szesnastkowych oddzielona przecinkiem):

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

Aby uzyskać duże litery EBCDIC A do C i B do D:

KOD ALTSEQ = (C1C3, C2C4)

Ogólnie rzecz biorąc, byłoby to dużo podatnego na błędy pisania, więc użyłbyś innego kroku SORT do wygenerowania kart kontrolnych dla tego kroku i pozwoliłby SORTowi odczytać je z zestawu danych utworzonego przez ten nowy krok.

Oczywiście w przypadku każdego języka, który obsługuje „tabelę tłumaczeń”, zmiana tablicy jest tak prosta, jak to tylko możliwe. Przyjemny program COBOL z konkretną stroną kodową, i można to zrobić w jednym wierszu kodu procedury COBOL (plus obowiązkowe wiersze COBOL, które pasują do wszystkiego ... nie tak wielu w tym konkretnym przypadku).

Och, 1,80 to „obraz karty”, który będzie zawierał tekst. Prawdopodobnie wszystko za pierwszym razem ...

Bill Woodger
źródło
+1. Korzystanie z DFSORT dla ROT2 jest naprawdę wyjątkowe.
Abhijit
3

C, 75 bajtów

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

Przykład:

$echo "Today is a great day" |./a.out
Vqfca ku c itgcv fca
r3mainer
źródło
zakładając, że EOF wynosi -1, możesz użyć bitowej nie ~(c=getchar())zapisywać 1 znaku
użytkownik12205
a ponieważ pytanie mówi, że nie ma interpunkcji, jedynym niealfabetycznym znakiem jest spacja, więc możesz go przetestować za pomocą c-32, co pozwala zaoszczędzić 6 znaków
użytkownik12205
To jest konkurs popularności, a nie kod-golf
Mhmd
Code golf jest teraz przeciwny popularności?
Desty
@ user689 masz rację, przepraszam, że nie przeczytałem dokładnie pytania. Ponieważ ten kod jest napisany w jednym wierszu z trójskładnikiem i nie int, a nawet liczba znaków jest podana, w jakiś sposób założyłem, że to kod golfowy. Przepraszam.
user12205
3

Pyton

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

Wynik:

rfc ucyrfcp gq tcpw lgac rmbyw

Doktor
źródło
(1) To +3prawda? (2) Możesz wstawić wiele rzeczy, aby było to bardziej skomplikowane. (wydaje się, że jest to trend tutaj)
Simon Kuang
b = a[2:] + a[:2]byłby mniej podatny na literówki i wydaje się, że nie ma potrzeby przekształcania łańcucha analist
Tobias Kienzler
och i c = dict(zip(a,b)). I exceptnie powinno być tak ogólne, użyjexcept KeyError
Tobias Kienzler
strkonkatenacja jest bardzo wolna. Utwórz listi dołącz do nich razem byłoby znacznie lepiej.
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
źródło
3

PHP

Jednak nie najkrótszy!

Przykład na żywo: 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);

Uwaga:

ord('`') = ord('a') - 1
ComFreek
źródło
3

TI-Basic (język, który działa na kalkulatorach graficznych 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  

To jest dobre oprogramowanie szyfrujące (dla TI-83). Pod pojęciem ti-83 rozumiem dowolny kalkulator z rodziny ti-83 lub ti-84. „->” oznacza „SKLEP” dostępny przez „STO>”

c4ooo
źródło
3

Rubin 40 32

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

aktualizacja (jak widać z rozwiązania danieros bash):

p gets.tr("A-Za-z","C-ZABc-zab")
epson121
źródło
3

Java, w rzeczywistości jest zrozumiałe.

Wiem, że cokolwiek z białymi spacjami i nawiasami ma problemy z CG, ale tutaj jest szansa.

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

Istnieją osobne konkursy na zaciemnianie kodu, ale mogę sprawić, że moje też będą śmieszne.

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
źródło
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);

Co z tymi wszystkimi komentarzami, mój chomik może to zrozumieć.

Cilan
źródło
2

Myślę, że ROT2 to!

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
źródło
Na początku myślałem o czymś takim, ale nigdy nie myślałem [A-z]!
Szczoteczka do zębów
2

Haskell

Oto implementacja oparta na obiektywach. Używam Isodo reprezentowania izomorfizmu między zwykłym tekstem a tekstem przekonwertowanym na tajny język. O ile nie podasz --fromopcji, dane wejściowe są konwertowane na tajny język. Jeśli --fromopcja jest podana, przeprowadzana jest odwrotna konwersja.

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)

Przykłady:

$ ./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
źródło
1

do

    #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;
 }
Mhm
źródło
możesz zaoszczędzić dużo kodu, używając arytmetyki
modulu na znakach
@ blabla999 to konkurs popularności, a nie golfowy
Mhmd
1
przepraszam - nie chciałem obrazić. Przeoczyłem to.
blabla999
1

EcmaScript 6:

alert(prompt(_='').split(_).map(x=>String.fromCharCode(x.charCodeAt()+(x>' '?x>'x'|x>'X'&x<'['?-24:2:0))).join(_))
Szczoteczka do zębów
źródło
EcmaScript, mój zdewaluowany stary wróg
Cilan
1

JAWA

32jest, spacewięc wydrukujemy go takim, jaki
88jestX więc niczym mniej niż 89porusza się w górę 2 znaków
90jest Zwięc niczym mniej niż 91przesuwa się w dół 24 znaków (z czymś mniej niż 89już traktowane tak tylko 89i 90skutecznie)
Powtórz ten sam proces na małe litery, od 97tak a, aby 122jak 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
źródło
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

Wynik:

PS C:\Temp> .\z.ps1 "Today is a great day"
Vqfca ku c itgcv fca
PS C:\Temp>
Chris J
źródło
1

PHP

To rozwiązanie jest nudne:

echo strtr('Today is a great day','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz','CDEFGHIJKLMNOPQRSTUVWXYZABcdefghijklmnopqrstuvwxyzab');
Przyzwoity Dabbler
źródło
1

Python 3

Myślę, że nie do końca zrozumiałem pytanie, ale w każdym razie:

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
źródło
1

Python 2.x

Próba bogatego w funkcje rozwiązania w języku Python.

Funkcje:

  • użycie dykta
  • obsługa listy w okrągły sposób, dzięki czemu shift=2można ją zmieniać
  • możesz go również użyć do rozszyfrowania, gdy wiesz shift(po prostu użyj minus), pozwoli to również przetestować wyjście.
  • możliwość dodawania „ruchomych zakresów” - zakresów, w których jeździsz na rowerze
  • opcja może być strictdla niezdefiniowanych znaków lub po prostu zwrócić niezdefiniowany znak wejściowy.
  • tajny język nie pozostawia śladu;)

Tutaj idzie:

# 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    

Dowód:

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

Czy potrafisz rozszyfrować 'Wrpruurz lv qrw edg hlwkhu!':)?

PascalVKooten
źródło
Ciekawe, czy zastanawiasz się nad dodaniem tej dodatkowej „ścisłej” funkcji „nie do rzeczy ?
PascalVKooten
Zaoszczędziłby 6 linii kodu ...
PascalVKooten
1
Mówisz do siebie, czy coś mi brakuje? Jak usunięte komentarze?
Timtech
1
Tak, usunięte, proszę również nie usuwać komentarza ...
PascalVKooten
0

Extended BrainFuck

Ponieważ jest to konkurs popularności, napisałem to z zamiarem, aby był tak łatwy do śledzenia, jak tylko może być EBF. Jest mocno komentowany i celowo użyłem makr, aby program był bardziej dosłowny.

Prawdopodobnie najtrudniejszą rzeczą jest tutaj główny przełącznik, ponieważ EBF nie ma żadnych specjalnych sposobów, aby to zrobić, więc w rzeczywistości nie jest to prostsze niż jak by to zrobić w BrainFuck, z wyjątkiem zmiennych i nawiasów równoważących.

;;;; 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
źródło
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 ));
szpieg-zabójca
źródło
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
źródło
Powiedziałbym, że jest to bardzo podobne do tej odpowiedzi: codegolf.stackexchange.com/a/21002/12205
user12205
... i zgodziłbym się z tobą: P
rodrigopc
0

C #, 163

Tak, to nie jest golf golfowy. I tak poszedłem najkrócej (a przynajmniej zrobiłem to pierwszy dźgnięcie)

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

Sformatowany:

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

Tak, rzuciłem okiem na odpowiedź ufisa .

RobIII
źródło
0

C # 5 KB

(381 znaków)

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
źródło
Skompilowany rozmiar (5 KB) nie ma znaczenia. W przypadku golfa kodowego zwykle liczy się liczba znaków (kodu źródłowego), ale ponieważ to konkretne wyzwanie jest konkursem popularności, a nie golfem golfowym, znaki / rozmiar nie mają żadnego znaczenia. Najedź kursorem myszy na popularity contestznaczek pod wyzwaniem (zobaczysz opis wyjaśniający: „ Konkurs popularności to konkurs, w którym wygrywa poprawna odpowiedź z największą liczbą głosów pozytywnychusually the most creative answer ”).
RobIII
Ponadto zawiesza się na przykładowym danych wejściowych wyzwania, Today is a great dayponieważ nie obsługuje wielkich liter.
RobIII
0

Bash, 8 znaków

... jeśli masz zainstalowany pakiet bsdgames! Odczytuje ze standardowego wejścia.

caesar 2

Przykład

echo Today is a great day|caesar 2

Wynik: Vqfca ku c itgcv fca


źródło
0

do

#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
źródło