Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » Kryptografie für Anfänger - C-golf

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]
000
04.05.2003, 20:02 Uhr
~0xdeadbeef
Gast


So, jetzt versuch ich mich auch mal am Andere-Leute-Arbeiten lassen Es gibt eine Verschlüsselungsmethode, die sich Rot13 nennt. Sie ist im Grunde sehr simpel - wenn man sich das Alphabet als Ring vorstellt, wird ein Buchstabe auf den genau gegenüerliegenden - also 13 Buchstaben weiter - abgebildet:

Code:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
NOPQRSTUVWXYZABCDEFGHIJKLM


Entschlüsselt wird dabei auf die selbe Art, wil sagen, wenn man einen verschlüsselten Text wieder durch die Verschlüsselung jagt, kriegt man den alten zurück. Sonderzeichen sind nicht betroffen. Ein Beispiel?

Code:
Hello, World! sieht in Rot13 verschluesselt ganz schoen bescheuert aus.
Uryyb, Jbeyq! fvrug va Ebg13 irefpuyhrffryg tnam fpubra orfpurhreg nhf.


Ä, Ö, Ü und ß sehe ich als sonderzeichen an. Ich will ein Programm, das das macht. Ob ihr aus einer Datei lest und in eine andere schreibt, oder von stdin lest und nach stdout schreibt, ist mir dabei egal.

Das kürzeste Programm gewinnt (in ASCII-Zeichen Quellcode). Von den Fortgeschrittenen erwarte ich, dass sie weniger als 200 Zeichen brauchen, Whitespaces nicht mitgezählt (außer, sie sind unbedingt). Mein Rekord ist zurzeit 136.

Gut Holz!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.05.2003, 21:06 Uhr
~0xdeadbeef
Gast


Update: Ich bin bei 99 Zeichen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.05.2003, 21:36 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hi beefy,
was hälst du hiervon?
ist allerdings nicht case-sensitiv
ich bin schon auf die high-end Lösung gespannt


C++:
#include "stdio.h"
int main(){

FILE *f;
char b[99];
int j,i=0;

f=fopen("a","r+");

while(EOF!=(b[i]=fgetc(f)))i++;
fseek(f,0,SEEK_SET);

for(j=0;j<i;j++) if(b[j]>77) fputc(b[j]-13,f); else fputc(b[j]+13,f);

fclose(f);

return 0;
}




Sollten ja weniger als 200 Zeichen sein, darf ich mich absofort als Fortgeschritten betrachten?
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 04.05.2003 um 21:41 Uhr von Heiko editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.05.2003, 22:43 Uhr
~0xdeadbeef
Gast


Dein Code ist buggy. Er berücksichtigt weder Sonderzeichen noch Kleinbuchstaben. Ts, ts, nochmal zurück ans Zeichenbrett
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.05.2003, 22:49 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ok das mit den Kleinbuchstaben sehe ich ein aber auf was sollen die Sonderzeichen abgebildet werden?
Das ist mir gerad nicht so klar. Also was wird z.B. aus einem ö?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.05.2003, 23:15 Uhr
virtual
Sexiest Bit alive
(Operator)


90!

C++:
int main(){int c;while((c=getchar())>=0)putchar(isalpha(c)?((c-1)%32+13)%26+(c&96)+1:c);}


Ist aber nur Halb legal. daher die Frage: Muß es einANSI C(++) Programm sein (#include fehlt)?
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 04.05.2003 um 23:24 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.05.2003, 23:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich kann das mit den kleinbuchstaben zwar noch halbwegsbrauchbar umschreiben, aber das war nicht meine eigentliche Idee.

Ich wollte das ganze eingentlich mit 11100011 verunden, dann plus xor 4
aber die beiden anderen (das 8 und 16 wertige) Bytes machen mir Schwierigkeiten. Ich habe da keine eindeutige Abbildungsvorschrift hinbekommen. Wie geht das?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.05.2003, 23:53 Uhr
~0xdeadbeef
Gast


@virtual: Der gcc erkennt dein Programm mit -ansi -pedantic an, also wird es wohl ansi-c89 sein. Scheiße, mit dem Trick hast du mich um 9 Zeichen unterboten:

C++:
main(){int c,o;while((c=getchar())!=-1)putchar(c>64&c<91?65+(c-52)%26:c>96&c<123?97+(c-84)%26:c);}


Übrigens kannst du weitere 4 zeichen sparen, wenn du das "int " vor main() wegläßt.
Eduit by virtual: code tag korrigiert

Dieser Post wurde am 05.05.2003 um 07:57 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.05.2003, 23:56 Uhr
Christian
C/C++ Master
(Operator)


@ Virtual:

Wenn das 100% von dir kommt, dann echt, Hut ab, du bist genial!
Ganz schön raffiniert!
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.05.2003, 06:57 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat:
Christian postete
@ Virtual:

Wenn das 100% von dir kommt, dann echt, Hut ab, du bist genial!
Ganz schön raffiniert!


Oh, danke für die Blumen!
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ] [ 4 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: