|
|
(17 intermediate revisions by 5 users not shown) |
Line 1: |
Line 1: |
| Es gelten die [[/Generische_Regeln|generischen Regeln]] | | Es gelten die [[Codegolf/Generische_Regeln|generischen Regeln]] und STALLMANCATs Ratschläge: |
|
| |
|
| === Challenge #3: Wochentagberechnung ===
| | [[image:stallmancatdont128610053697188637.jpg]] |
| "Wie ist der Wochentag eines bestimmten Datums?"
| |
|
| |
|
| $ ./wochentag 1. Januar 1970
| | === Challenge #5: RGB2Rv10 === |
| Donnerstag
| | "Interpretiere einen esoterischen 2D Taschenrechner" |
| $
| |
|
| |
|
| Siehe: http://de.wikipedia.org/wiki/Wochentagsberechnung
| | [[Codegolf/RGB2Rv10|klick mich]] |
|
| |
|
| | === Challenge #4: WPA-Passphrase generieren === |
| | "Generiere einen 63 Zeichen-String gleichverteilt aus printable ASCII" |
|
| |
|
| Um es ein wenig golfbarer zu machen, rechnen wir nur mit dem
| | [[Codegolf/wpa|klick mich]] |
| gregorianischen Kalender.
| |
|
| |
|
| Testcases kommen bald[tm].
| | === Challenge #3: Wochentagberechnung === |
| | "Wie ist der Wochentag eines bestimmten Datums?" |
|
| |
|
| [[user:sur5r|sur5r]] ist der Schiedsrichter dieser Challenge. | | [[Codegolf/3|klick mich]] |
|
| |
|
| Es dürfen keine generischen/speziellen Datumsumrechnungsmodule der Sprache benutzt werden, auch wenn sie Bestandteil der Distribution der Sprache sind.
| | aktiv? NEIN - In der Auswertung |
|
| |
|
| Das Programm darf nichts nach STDERR schreiben
| | Höchstens haltbar bis/hoogstens houdbaar tot: 27.07.2008 00:00 CEST |
| | |
| ==== Kungi (Python): ====
| |
| "Geheim"
| |
|
| |
|
| === Challenge #2: Unlambda === | | === Challenge #2: Unlambda === |
Line 30: |
Line 27: |
| Na, dieses Loch war dann doch einwenig zu umfangreich? | | Na, dieses Loch war dann doch einwenig zu umfangreich? |
|
| |
|
| === Challenge #1 ===
| | aktiv? NEIN |
| <SdK> gibts wörter, die nach rot13 n anderes existierendes wort ergeben?
| |
|
| |
|
| Testdatei: http://qu.cx/~mxf/web2.gz == /usr/share/dict/web2
| | === Challenge #1: aka. wie alles anfing === |
| Gepiped durch wc -l sollte 154 rausfallen, da einige Wörter doppelt vorkommen.
| |
| Falls Duplikate gefiltert werden, sollten es 132 sein.
| |
| Ausgabe in Form von "iraq->vend\n"
| |
| | |
| ==== mxf: Perl ====
| |
| Fuer 154 Zeilen:
| |
| perl -nle'$w{$r=$_=lc}++;y&a-z&n-za-m&;$w{$_}&&print"$r->$_"' /usr/share/dict/web2
| |
| 50+2 Zeichen<br/><br/>
| |
| Fuer 132 Zeilen:
| |
| perl -nle'$w{$r=$_=lc}=1;y&a-z&n-za-m&;$w{$_}-->0&&print"$r->$_"' /usr/share/dict/web2
| |
| 54+2 Zeichen
| |
| | |
| Das ganze in PHP
| |
| php -r'foreach(file($argv[1],2)as$k){$f[$k=strtolower($k)]=0;if(isset($f[$r=str_rot13($k)]))echo$r."->$k\n";}' /usr/share/dict/web2
| |
| | |
| 154 Zeilen/102 Zeichen
| |
| ==== urs: Perl ====
| |
| perl -nle'($$_=$_=lc)=~y^a-z^n-za-m^;print"$_->$$_"if$$$_' /usr/share/dict/web2
| |
| 47+2 Zeichen. Gibt 154 Zeilen output.
| |
| | |
| ==== [[User:PhilFry|PhilFry]]: Ruby ==== | |
| ruby -nle'y||={};$_.downcase!;y[$_]=0;r=$_.tr("a-z","n-za-m");y[r]&&(p $_+"->"+r)' < /usr/share/dict/web2
| |
| | |
| 71 Zeichen
| |
| | |
| ==== Ch3ka: php ====
| |
| <?$f=file($argv[1]);while($a[]=strtolower(next($f))){}while($b[]=str_rot13(next($a))){$c=end($b);if(in_array($c,$a))echo$c;}?>
| |
| 122 Chrs
| |
| | |
| ==== watz: PHP ====
| |
| <?require "File.php";foreach(explode("\n",strtolower(File::readAll($argv[1]))) as $f)$i[$f]=str_rot13($f);foreach($i as $a=>$b){if(array_key_exists($b,$i)){unset($i[$a]);echo"$a->$b\n";}}?>
| |
| 190 Zeichen .. dafür schneller als Ch3ka .. Sortiert doppelte Worte auch raus --> 132 Zeilen+1 (1 Zeile leer weil eine Leerzeile im Dictionary)
| |
| Man kann aber noch ein paar Zeichen rauskürzen und evlt. das mit dem File einlesen schöner machen.
| |
| | |
| Obige Zeile als PHP-Skript speichern und Aufruf mit '''php <php-skript> <dict>'''
| |
| | |
| Alternativ 186 Zeichen mit Aufruf:
| |
| php -r 'require "File.php";foreach(explode("\n",strtolower(File::readAll($argv[1]))) as $f)$i[$f]=str_rot13($f);foreach($i as $a=>$b){if(array_key_exists($b,$i)){unset($i[$a]);echo"$a->$b\n";}}' <dict>
| |
| | |
| ==== [[User:Kungi|Kungi]]: Python ====
| |
| import sys
| |
| e=dict([(a,0)for a in open(sys.argv[1]).read().lower().split()])
| |
| for w in e:
| |
| b=w.encode('rot13')
| |
| if b in e:
| |
| print w+" -> "+b
| |
| | |
| kungi@BeerBook: wc golf.py
| |
| 6 19 140 golf.py
| |
| | |
| ==== k-zed: common lisp ====
| |
| | |
| (with-open-file (s "/usr/share/dict/web2")
| |
| (let ((d (make-hash-table :test #'equal)))
| |
| (loop for l = (read-line s nil) until (not l)
| |
| do (setf (gethash (string-downcase l) d) t))
| |
| (maphash
| |
| (lambda (k v)
| |
| (let ((p (map 'string (lambda (c) (code-char (+ (mod (- (char-code c) 84) 26) 97))) k)))
| |
| (when (gethash p d) (format t "~A -> ~A~%" k p)))) d)))
| |
| | |
| ==== CentronX: eicar & ein Inder ====
| |
| | |
| Man lasse einen Inder das ganze in eicar eintippen und dann vergleichen.
| |
| | |
| ==== Sack-C-ment: C natürlich ====
| |
| #include <stdio.h>
| |
| #include <stdlib.h>
| |
| #include <search.h>
| |
|
| |
| int main() {
| |
| FILE *fd = fopen("/tmp/web2", "r"); char *b = malloc(234937 * 26); int c = 0; ENTRY e,*d; hcreate(234937);
| |
| while (fgets(b+(26*c++), 26, fd)) { char *r=strdup(b+(26*(c-1))); e.key=r; while (*(++r) != '\0' && *r != '\n') *r = (*r+13 > 'z' ? *r-13 : *r+13); e.data = b+(26*(c-1)); hsearch(e, ENTER); }
| |
| for (c = 0; c < 234937; c++) { e.key = b+(26*c); if (d=hsearch(e, FIND)) printf("print it! %s / %s\n", d->data, d->key); }
| |
| }
| |
| Compile / Setup:
| |
| sort /usr/share/dict/web2 /tmp/web2
| |
| gcc -o golf golf.c && ./golf
| |
| Exakt 500 Zeichen
| |
| | |
| ==== Sack-C-ment modified by jchome ====
| |
| | |
| #include <stdio.h>
| |
| #include <search.h>
| |
| #define A 234937
| |
| main(){FILE *f=fopen("web2", "r");char *b=malloc(A*26);int c=0;ENTRY e,*d;hc
| |
| reate(A);while(fgets(b+(26*c++),26,f)){char *r=strdup(b+(26*(c-1)));e.key=r;
| |
| while(*(++r)!='\0'&&*r!='\n')*r=(*r+13>'z'?*r-13:*r+13);e.data=b+(26*(c-1));
| |
| hsearch(e,ENTER);}for(c=0;c<A;c++){e.key=b+(26*c);if(d=hsearch(e,FIND))print
| |
| f("%s->%s\n",d->data,d->key);}}
| |
|
| |
|
| | <SdK> gibts wörter, die nach rot13 n anderes existierendes wort ergeben? |
|
| |
|
| `--> wc foo.c
| | die Antworten sind [[Codegolf/1|hier]] |
| 4 14 392 foo.c
| |
|
| |
|
| ==== urs: Haskell ====
| | aktiv? NEIN |
| (Nein, eigentlich nicht auf länge optimiert. Aber wenn wir schon seltsame Programmiersprachen nehmen...)
| |
| import qualified Data.Set as S
| |
| import Data.Char
| |
| r=map(\x->chr(ord 'a'+((ord x-ord 'a'+13)`mod`26)))
| |
| f [] w=[]
| |
| f (x:y) w |x`S.member`w=x:f y w
| |
| |otherwise=f y (S.insert (r x) w)
| |
| main = do
| |
| cts <- getContents
| |
| putStr$concat$concatMap(\x->[x,"->",(r x),"\n"])$f(words$map toLower cts) S.empty
| |
| 299 Zeichen. 154 Zeilen Ausgabe.
| |
|
| |
|
| [[Category:Projekte]] | | [[Category:Projekte]] |
Es gelten die generischen Regeln und STALLMANCATs Ratschläge:
Challenge #5: RGB2Rv10
"Interpretiere einen esoterischen 2D Taschenrechner"
klick mich
Challenge #4: WPA-Passphrase generieren
"Generiere einen 63 Zeichen-String gleichverteilt aus printable ASCII"
klick mich
Challenge #3: Wochentagberechnung
"Wie ist der Wochentag eines bestimmten Datums?"
klick mich
aktiv? NEIN - In der Auswertung
Höchstens haltbar bis/hoogstens houdbaar tot: 27.07.2008 00:00 CEST
Challenge #2: Unlambda
Ein Unlambda Interpreter. Genauere Zielvorgaben gibt es bald.
Na, dieses Loch war dann doch einwenig zu umfangreich?
aktiv? NEIN
Challenge #1: aka. wie alles anfing
<SdK> gibts wörter, die nach rot13 n anderes existierendes wort ergeben?
die Antworten sind hier
aktiv? NEIN