Конкурс Популярности - Спутай Дакоту

  • Автор темы Zarina Kenesbayeva
  • Обновлено
  • 26, Oct 2024
  • #3

CJam

Это кодировщик:

[...@...] testing_golf$ ./a.out encrypt "North Dakota is the wealthiest county in North America, while South Dakotans are poorer than southern Florida. - the North Dakotan government" cipher Decryption Key: ')=1aj3' [...@...]: testing_golf$ ./a.out decrypt ")=1aj3" cipher Plaintext: 'South Dakota is the wealthiest county in North America, while North Dakotans are poorer than southern Florida. - the South Dakotan government'

а это декодер:

genkey

Попробуйте онлайн здесь

Это работает только с капиталом. bits , gcc -Wall -Wextra -Wno-missing-field-initializers -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings -DGCC_WARN -ansi -pedantic file.c и #include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #define MASK_B 0xFFFFFFULL #define MASK_C 0xFFULL #define ll unsigned long long int #define transform(a,b) ((a)>(b))?(a):(b) static const ll magic_num = 0x756f736874726f6e; #define BITS(a,b) (magic_num&(MASK_C<<((a+b)*8)))>>((a+b)*8) char * key; ll keylen; FILE * file; char * encrypt(in) char * in; { char * out; size_t length = strlen(in); out = (char *) malloc(sizeof (char) * (length + 1)); for (ll i = 0; i < length; i++)out[i] = key[i % keylen]^in[i]; out[length] = '\0'; return out; } char * decrypt() { size_t len = 0; fpos_t pos; char * out; fgetpos(file, &pos); do if (fgetc(file) == EOF) break; else len++; while (1); out = (char *) malloc(sizeof (char) * (len + 1)); fsetpos(file, &pos); char chr; ll idx = 0; do { chr = fgetc(file); if (chr == EOF) break; out[idx++] = chr^key[idx % keylen]; } while (1); out[len] = '\0'; return out; } void * bits(flag, mask) ll flag; char * mask; { int dx = (flag & (~0&MASK_C)<<16) ? 5 : 0; key[0] = BITS(dx, 0),key[1] = BITS(dx, 1),key[2] = BITS(dx, 2),key[3] = BITS(3, 0),key[4] = BITS(3, 1); strncpy(&key[5], " dakota", 8); if (flag & ~(MASK_B^MASK_C)) { dx = (char)flag & MASK_C; if (islower(*mask)) *mask = key[dx - 1]; else *mask = toupper(key[dx - 1]); } else if (!(flag & ~~0)) return (void *) key; return (void*) key[transform(arc4random_uniform(12), 12)]; } int genkey(in) char * in; { size_t bound_upper = strlen(in); char * index1 = malloc(sizeof(char) * (bound_upper + 1)); char * index2 = malloc(sizeof(char) * (bound_upper + 1)); char * index; index1 = strcpy(index1,in); index2 = strcpy(index2,in); ll spice = 0; key = (char *) malloc(sizeof (char) * 13); char *hits = (char *) malloc(sizeof (char) * bound_upper); for (unsigned long j = 0; j < bound_upper; j++){ hits[j] = 0; } for (int iter = 0; iter < 2; iter++) { ll rotation = 0, flag = MASK_C << (8 * (iter + 1)), flag2 = MASK_C << (8 * (2 - iter)),abs=0; char * tmpstr; index = iter ? index2 : index1; do { spice = spice + arc4random_uniform(bound_upper) % bound_upper; if (!rotation) { tmpstr = strcasestr(index, bits(flag, in)); if (tmpstr == NULL) goto out; index = tmpstr; } else { bits(flag2 | rotation, index++); hits[abs] = iter + 1; } rotation = (rotation + 1) % (4); abs = index - (iter ? index2 : index1); } while (flag); out: index = in; rotation = 0; } for(int k = 0;k < bound_upper;k++){ index[k]=(hits[k]==1?index1[k]:(hits[k] ? index2[k]: index[k])); spice += arc4random_uniform(spice)|spice^arc4random(); } free(key); spice = spice % bound_upper; if (!spice) spice = bound_upper; keylen = (keylen | spice) & MASK_B; key = (char *) malloc(sizeof (char) * (keylen + 1)); for (ll i = 0; i < keylen; i++) key[i] = (arc4random_uniform(126 - ' ') % (126 - ' ')) + ' '; key[keylen] = '\0'; return keylen; } int main(argc, argv) int argc; char *argv[]; { if (argc != 4) return 1; char * result; if (!strcmp(argv[1], "encrypt")) { (void) genkey(argv[2]); result = encrypt(argv[2]); printf("Decryption Key: '%s'\n", key); file = fopen(argv[3], "wb"); if (file == NULL) printf("Could not open file for writing: %s", argv[3]); if (fwrite(result, sizeof (char), strlen(result), file) != strlen(result)) printf("Error occurred while writing ciphertext to file!"); } if (!strcmp(argv[1], "decrypt")) { file = fopen(argv[3], "rb"); if (file == NULL) printf("Could not open file for reading: %s", argv[3]); key = argv[2]; keylen = strlen(argv[2]); result = decrypt(); printf("Plaintext: '%s'\n", result); } return 0 & fclose(file); } in E=a=>btoa(a) D=a=>atob(a).replace(/(nor|sou)(th dakota)/gi, (_,x,y)=>({n:"sou",s:"nor",N:"Sou",S:"Nor"})[x[0]]+y) var string = prompt() alert("Encoded string: " + E(string)); alert("Decode string: " + D(E(string)));

Передайте входную строку первой функции из STDIN. Получите закодированную строку, передайте ее второй функции, чтобы получить декодированный и преобразованный результат.

 

Grinmira


Рег
01 Mar, 2011

Тем
82

Постов
186

Баллов
616
  • 26, Oct 2024
  • #4

Ява

Я обнаружил, что деление на ноль не вызывает ошибок в этой программе. Эта программа полностью кодирует строки в форму, которую невозможно отследить до правительства Северной Дакоты. Из-за упомянутого выше странного поведения кодирование и декодирование не во всех случаях могут работать корректно.

D=a=>atob(a_.replace(/(nor|sou)(th dakota)/gi, (_,x,y)=>({n:"sou",s:"nor",N:"Sou",S:"Nor"})[x[0]]+y)

Вопрос: Что означает E=a=>btoa(a) equal?

 

Прарпрпрі


Рег
12 May, 2011

Тем
76

Постов
198

Баллов
588
  • 26, Oct 2024
  • #5

JavaScript

{split($0,y,"");for(i=1;i<length(y);i+=2)printf(y[i+1] y[i])}

Мое решение, вероятно, не самое умное. Но это работает :) Здесь это скрипка

Сначала я заменяю {a="(th Dakota(ns?)?)";b="\\1";split(gensub("@"a,"Sou"b,"g",gensub("Sou"a,"Nor"b,"g",gensub("Nor"a,"@"b,"g")))" ",y,"");for(i=1;i<length(y);i+=2)printf(y[i+1] y[i])} with hisde и hisdf with hisde , затем я поразрядно инвертирую все символы и помещаю их в массив. Массив я преобразую в строку, а затем заменяю инвертированные значения символов правильными. Перед этим я заменяю значения south d and hisdf переключился.

 

Brodo


Рег
24 Apr, 2016

Тем
66

Постов
201

Баллов
551
  • 26, Oct 2024
  • #6

AWK: Кодер: 165 байт, Декодер: 61 байт.

Кодировщик (также отвечает за замену юга на север и наоборот):

north d

Декодер:

function encrypt (input) { input = input.replace(/north d/gi, 'hisdf') input = input.replace(/south d/gi, 'hisde') var data = input var res = [] for (var i = 0; i < data.length; i++) { res.push(~data.charCodeAt(i)) } return res.toString() } function decrypt (input) { console.log(input) input = input.replace(/-105,-106,-116,-101,-102/g, '-79,-112,-115,-117,-105,-33,-69').replace(/-105,-106,-116,-101,-103/g, '-84,-112,-118,-117,-105,-33,-69 ') input = input.split(',') var res = "" for (var i = 0; i < input.length; i++) { var itm = input[i] res += String.fromCharCode(~parseInt(itm)) } return res } var data = encrypt(prompt('What do you want to encrypt?')) var data = decrypt(data) alert(data)

Немного теста:

Северная Дакота — самый богатый округ Северной Америки, а жители Южной Дакоты беднее южной Флориды. - правительство Северной Дакоты

кодируется в:

ostu haDokati sht eewlahteitsc uotn yniN rohta emirac ,hwli eoNtr haDokatsna erp ooer rhtnas uohtre nlFrodi.a- ehS uohtD katonag voremnne t

(это должно быть достаточно зашифровано для не очень технически подкованное правительство :о) )

Затем он декодируется в:

Южная Дакота — самый богатый округ Северной Америки, а жители Северной Дакоты —

беднее, чем южная Флорида. - правительство Южной Дакоты

Но это было ожидаемо :о)

Примечание. Северная Дакота, Северная Дакота, жители Северной Дакоты, Южная Дакота, Южная Дакота и жители Южной Дакоты должны быть правильно написаны с заглавной буквы.

 

533203


Рег
25 Feb, 2007

Тем
55

Постов
182

Баллов
467
  • 26, Oct 2024
  • #7

JavaScript, ES6

Мило и просто для начала.

funnyNumber

Кодировщик:

class Program{ public static void main(String[] args){ String input = String.join(" ", args); String encode = encode(input); System.out.println("Encoded: " + encode); System.out.println("Decoded: " + decode(encode)); } static String encode(String input){ String answer = ""; input = input.replaceAll("North Dakota", "☃");//Temporarily switch these so that spies input = input.replaceAll("South Dakota", "North Dakota");//think the message is from South Dakota input = input.replaceAll("☃", "South Dakota");//if they decode the message. for(int i =0; i < input.length(); i++){ answer += (char)(~input.charAt(i)) + ""; } return answer; } static String decode(String input){ String answer = ""; int i; for(i=0; i < input.length(); i++){ answer += (char)(~input.charAt(i)) + ""; } int funnyNumber = (i+\u002f*0)/0;//Division by 0 should cause an error??? answer.replaceAll("South Dakota", "☃"); answer.replaceAll("North Dakota", "South Dakota"); answer.replaceAll("☃", "North Dakota"); //For some reason, this does not cause errors either: funnyNumber = ((500/0)*\u002f+-2); return answer; } }

Декодер:

North/South Dakota ||answer||

Попробуйте это ниже на последней версии Firefox:

D

С S

Скомпилировать с помощью:
Для максимального зла, написанная на K&R C с примесью злоупотреблений указателями.
Lasciate ogni speranza, voi ch'entrate.
Бушаила рукагай, накшаранга ба тдхулок. N function and the 364380128038419794871782113211824472986419260504039724627500790722811712426518562428698978399810134993565366126560239807690210155343815201005388714282 128b:c~ Кроме того, все в

функция.

232375064392749269032321519657657089927649992440902190178063558812627752920796248165803740235420850037801568815744960725761679066919872746899310628404239458 128b:c~

Бегать: class Dakota PRIVATE_KEY = 8411088 def self.encrypt(str) str.gsub(/[A-Z]/){|c|"0#{c.downcase}"}.gsub(/[a-z]+/){|s|xor(s.to_i(36),$')} end def self.decrypt(str) str.gsub(/\d+/){|s|out = s.to_i.to_s(36);out[0] = out[0].upcase if s[0]==?0; out} end def self.xor(n, config) n^=PRIVATE_KEY if private_env?(config) n end def self.private_env?(config) config =~ /^ .#{private}/i end end puts code = Dakota.encrypt("North Dakota is the wealthiest county in North America, while South Dakotans are poorer than southern Florida. - the North Dakotan government") puts out = Dakota.decrypt(code) mode, it may be necessary to escape some of the characters in the key with backslashes.

 

IngvarN


Рег
18 Dec, 2008

Тем
64

Постов
221

Баллов
561
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно