Naja selber hosten ist halt ein Wert für sich, gerade für nichtöffentliches oder wenn man sich nicht abhängig machen will.Insofern - IMHO: Das kann github auch alles, da brauch ich keine eigene Software für.
Scripting Contest
Re: Scripting Contest
Unix is user-friendly; it's just picky about who its friends are.
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Ja, da gebe ich Dir Recht. Gerade bei privaten Daten ist Eigenhosting sehr sinnvoll. Ansonsten ist man damit auch flexibler, wenn man noch irgendetwas anpassen will.catdog2 hat geschrieben: Naja selber hosten ist halt ein Wert für sich, gerade für nichtöffentliches oder wenn man sich nicht abhängig machen will.
Was die Anforderung hier betrifft, so sehe ich da keine sensiblen privaten Daten, die es zu schützen gilt. Meinetwegen kann da die ganze Welt Commit-Rechte haben. Was die Abhängigkeit betrifft: IMO ist ein git-Repo umzuziehen wirklich kein Hexenwerk.
Wie dem auch sei, wenn jemand ein gitlab oder etwas ähnliches irgendwo aufsetzen will, dann ist auch super.
Jede Rohheit hat ihren Ursprung in einer Schwäche.
Re: Scripting Contest
Jup sag ich ja auch. Man könnte evtl sogar zu gitlab gehen, dann hat man wenigstens einen Anbieter, der auf zum größten Teil auf freie Software setzt.,Was die Anforderung hier betrifft, so sehe ich da keine sensiblen privaten Daten, die es zu schützen gilt.
Kommt drauf an was man nutzt. Wenn man nur das repo hin schiebt ist das problemlos. Wenn man noch das drumherum benutzt (Issue Tracker, …) hat man wieder Vendor Lockin.Meinetwegen kann da die ganze Welt Commit-Rechte haben. Was die Abhängigkeit betrifft: IMO ist ein git-Repo umzuziehen wirklich kein Hexenwerk.
Unix is user-friendly; it's just picky about who its friends are.
Re: Scripting Contest
Abgesehn von "die machen irgendwann auch zu", ist das Problem, dass ich bei github sehe: man darf nur einen Account haben: d.h. Deine df-de-Aktiviäten wären zu allem anderen was Du so machst gelinkt. Mag ich nicht.
Da es nur um kleine in ein paar Tagen zu schaffende Aufgaben geht, mag ich die Idee mit dem Wiki. Da gibts schließlich ja auch ne Historie. Und daher hier mein Vorschlag für den nächsten SC:
a) lese die SC-Wiki Seite aus, erstelle eine Liste aller Projekte und Autoren die auf entspechen Unterseiten liegen (alles was im Unterbereich liegt, auf der Liste_der_SC_Beiträge steht, oder mit SC_ anfängt etc - kommt drauf an wie das nachher im Wiki einsortiert ist)
b) überführe die Projekte in ein lokales Gitrepo. commitmessages sollten entsprechend gesetzt sein
b*) beachte Daten, Änderungsnotiz, Autoren, git name/mail koennte man auf account@df.de setzen etc; setze Tags auf akzeptierte Lösungen
c) sei sparsam was die Verbindungen zum Server betrifft, falls bereits ein lokales Repo da ist, zieh nur Änderungen.
d) erstelle ein tar.gz - entsprechend benannt - zb Zeitstempel des letzten Commits
e) erstelle eine Readme, sie soll Auskunft über die Projekte, die Autoren, die Akzeptiere Lösung enthalten
f*) werte die Readme aus, welcher SC war bisher am "beliebtesten" (hatte die meisten Autoren etc)
b* und f* wären Zusatzaufgaben, falls jemand Langeweile hat
Schwierigkeiten:
Anfänger: a, d
Fortgeschritten: b, d, d
mehr Fortgeschritten: c
Zeitrahmen ne Woche, falls jemand sagt, dass er Spass an c hat, ihm eine Woche aber nicht reicht, einmal um eine weitere Woche verlängern?
Da es nur um kleine in ein paar Tagen zu schaffende Aufgaben geht, mag ich die Idee mit dem Wiki. Da gibts schließlich ja auch ne Historie. Und daher hier mein Vorschlag für den nächsten SC:
a) lese die SC-Wiki Seite aus, erstelle eine Liste aller Projekte und Autoren die auf entspechen Unterseiten liegen (alles was im Unterbereich liegt, auf der Liste_der_SC_Beiträge steht, oder mit SC_ anfängt etc - kommt drauf an wie das nachher im Wiki einsortiert ist)
b) überführe die Projekte in ein lokales Gitrepo. commitmessages sollten entsprechend gesetzt sein
b*) beachte Daten, Änderungsnotiz, Autoren, git name/mail koennte man auf account@df.de setzen etc; setze Tags auf akzeptierte Lösungen
c) sei sparsam was die Verbindungen zum Server betrifft, falls bereits ein lokales Repo da ist, zieh nur Änderungen.
d) erstelle ein tar.gz - entsprechend benannt - zb Zeitstempel des letzten Commits
e) erstelle eine Readme, sie soll Auskunft über die Projekte, die Autoren, die Akzeptiere Lösung enthalten
f*) werte die Readme aus, welcher SC war bisher am "beliebtesten" (hatte die meisten Autoren etc)
b* und f* wären Zusatzaufgaben, falls jemand Langeweile hat
Schwierigkeiten:
Anfänger: a, d
Fortgeschritten: b, d, d
mehr Fortgeschritten: c
Zeitrahmen ne Woche, falls jemand sagt, dass er Spass an c hat, ihm eine Woche aber nicht reicht, einmal um eine weitere Woche verlängern?
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Ich habe die Seite mal ein kleines bisschen unter Verwendung von Mediawiki-Vorlagen verändert.
Template DebianforumBeitrag
Das erzeugt einen Link zum Forenbeitrag mit passender Beschriftung.
Beispiel
Ausgabe
Beitrag #1069775
Template SC_Link
Dieses Template zeigt einen Link zum erstellen einer Scripting Content Aufgabenseite an, die mit Vorlagentext gefüllt wird.
Beispiel
Ausgabe
Buchstaben ersetzen anlegen
Das ganze ist nicht perfekt. Wenn die Seite dann angelegt ist, am besten dieses Template ersetzen durch einen Mediawiki-Link:
Template DebianforumBeitrag
Code: Alles auswählen
{{DebianforumBeitrag|$Beitragsnummer}}
Beispiel
Code: Alles auswählen
{{DebianforumBeitrag|1069775}}
Beitrag #1069775
Template SC_Link
Dieses Template zeigt einen Link zum erstellen einer Scripting Content Aufgabenseite an, die mit Vorlagentext gefüllt wird.
Code: Alles auswählen
{{SC_Link|Neue Überschrift}}
Code: Alles auswählen
{{SC_Link|Buchstaben ersetzen}}
Buchstaben ersetzen anlegen
Das ganze ist nicht perfekt. Wenn die Seite dann angelegt ist, am besten dieses Template ersetzen durch einen Mediawiki-Link:
Code: Alles auswählen
[Buchstaben ersetzen]
Jede Rohheit hat ihren Ursprung in einer Schwäche.
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Ich habe mal weiter etwas am Wiki gearbeitet.
Insgesamt ist Mediawiki ok. Was blöd ist, ist die Verwendung von NoPaste(Man kann den Code nach einstellen nicht mehr verändern) oder das einstellen des Codes in Mediawiki selbst(git geht einfach viel schneller).
Insgesamt ist Mediawiki ok. Was blöd ist, ist die Verwendung von NoPaste(Man kann den Code nach einstellen nicht mehr verändern) oder das einstellen des Codes in Mediawiki selbst(git geht einfach viel schneller).
Jede Rohheit hat ihren Ursprung in einer Schwäche.
Re: Scripting Contest
Gerade zufällig gebraucht für eine reine Bash-Umgebung (ohne bc und die üblichen Verdächtigen):r4pt0r hat geschrieben:Na dann würde ich fürn Anfang mal den Dezimal/Binär-Umwandler vorschlagen.
Code: Alles auswählen
d=256; b=; while ((d)); do b=$((d%2))$b; d=$((d/2)); done; echo $b
-
- Beiträge: 1
- Registriert: 07.02.2016 19:23:10
Re: Scripting Contest
Hallo allerseits,
Zum Thema Zeichenersetzung per bash, kann ich noch eine auf die bash optimierte (nutzt mehr von deren Extras) Version beisteuern.
Diese Version ist ca. 50-100% schneller als die bereits verbesserte Version. Kürzer ist sie auch, leicher verständlich wahrscheinlich nicht.)
Zum Thema Zeichenersetzung per bash, kann ich noch eine auf die bash optimierte (nutzt mehr von deren Extras) Version beisteuern.
Diese Version ist ca. 50-100% schneller als die bereits verbesserte Version. Kürzer ist sie auch, leicher verständlich wahrscheinlich nicht.)
Code: Alles auswählen
#!/bin/bash
function storys {
local -A map=(
[A]=4 [a]=4
[B]=8 [b]=8
[E]=3 [e]=3
[G]=6 [g]=6
)
local -i i n q=0
local line c s
while read line; do
s=''
n=${#line}
for ((i=0; i < n; ++i)); do
c=${line:i:1}
[[ $c = '"' ]] && ((q^=1))
((q)) && s+=$c || s+=${map[$c]:-$c}
done
echo -E "$s"
done
}
Re: Scripting Contest
hi
leider ist es hier still geworden, schade.
@heisenberg der Link ist tot
ciao
leider ist es hier still geworden, schade.
@heisenberg der Link ist tot
heisenberg hat geschrieben:Ich habe mal einen Entwurf zum Thema:
Entwurf: Scripting Contest HOWTO
Lasst uns das hier ausdiskutieren und anschliessend können wir unsere Ergebnisse zunächst auf der Seite dort festhalten. Jeder hat dort
Bearbeitungsrechte.
ciao
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Da habe ich ja Glück gehabt, dass ich meinen privaten VServer gerade noch rechtzeitig 3 Monate bevor der nächste Besucher meine Webseite findet jetzt gefixt habe.
Jede Rohheit hat ihren Ursprung in einer Schwäche.
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Neue Idee/Vorschlag, weil ichs gerade selbst geskriptet habe. Einen RainbowTable-Generator (RTGen).
Dem Skript wird eine Menge zu verwendender Zeichen übergeben z.B. "01" und die Länge z.B. 3. Jetzt soll das Skript alle möglichen Zeichenkombinationen ausgeben... Also:
1
0
10
01
11
00
100
010
110
001
101
011
111
000
Sollte doch stimmen?
Zeichen, Zeichenanzahl und Länge müssen beliebig sein und d. Länge darf auch "unendlich" sein!
Pluspunkte bekommt wer eine Mindestlänge implementiert.
Zusatzaufgabe, die aber jemand lösen müsste ist eine Kontrolle der Ausgabe. Stimmt die Zeilenanzahl/Anz. d. Kombinationen (Potenz) und sind keine doppelt usw.
Dem Skript wird eine Menge zu verwendender Zeichen übergeben z.B. "01" und die Länge z.B. 3. Jetzt soll das Skript alle möglichen Zeichenkombinationen ausgeben... Also:
1
0
10
01
11
00
100
010
110
001
101
011
111
000
Sollte doch stimmen?
Zeichen, Zeichenanzahl und Länge müssen beliebig sein und d. Länge darf auch "unendlich" sein!
Pluspunkte bekommt wer eine Mindestlänge implementiert.
Zusatzaufgabe, die aber jemand lösen müsste ist eine Kontrolle der Ausgabe. Stimmt die Zeilenanzahl/Anz. d. Kombinationen (Potenz) und sind keine doppelt usw.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- TRex
- Moderator
- Beiträge: 8069
- Registriert: 23.11.2006 12:23:54
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: KA
Re: Scripting Contest
In python wäre das integriert. Fast zu einfach, um es als Lösung zu akzeptieren
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
Windows ist doof, Linux funktioniert nicht • Don't break debian! • Wie man widerspricht
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Ich habs in Perl. Bin schon total auf andere Lösungen gespannt. Gerade weils bei den anderen Aufgaben, ganz andere Lösungsansätze gab, als ich u.a. hatte.
PS: Aber wartet bis zum So. mit dem zeigen der Lösungen.
PS: Aber wartet bis zum So. mit dem zeigen der Lösungen.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Was meinst Du damit? Ich verstehe die Schwierigkeit dabei nicht.Pluspunkte bekommt wer eine Mindestlänge implementiert.
D. h. das Ausgabeformat sollte fest definiert sein. Dann kann man das Testscript auch über die Lösungen drüberlaufen lassen:Zusatzaufgabe, die aber jemand lösen müsste ist eine Kontrolle der Ausgabe. Stimmt die Zeilenanzahl/Anz. d. Kombinationen (Potenz) und sind keine doppelt usw.
Code: Alles auswählen
1. Zeile: Zeichenvorrat
2. Zeile: Länge
3. bis letzte Zeile: Alle gefundenen Kombinationen
Code: Alles auswählen
ab
2
a
b
ab
ba
aa
bb
Parameter 1: Zeichenvorrat
Parameter 2: Länge
Beispiel:
Code: Alles auswählen
./prog.hs "ab" 2
Jede Rohheit hat ihren Ursprung in einer Schwäche.
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Damit meine ich das die Kombinationsmöglichkeiten nicht bei einer Länge von 1 anfangen sondern z.B. bei dem Wert der als Mindeslänge angeben wurde. Dieser muss kleiner als die Länge sein.heisenberg hat geschrieben:Pluspunkte bekommt wer eine Mindestlänge implementiert.
(Also gleich mit Zeichenmenge^Mindestlänge begonnen wird.)
Ob das nun eine extra Schwierigkeit ist weiss ich nicht. Ich habe das mit dabei.
Ja OK, das macht Sinn.heisenberg hat geschrieben:D. h. das Ausgabeformat sollte fest definiert sein. Dann kann man das Testscript auch über die Lösungen drüberlaufen lassen:Zusatzaufgabe, die aber jemand lösen müsste ist eine Kontrolle der Ausgabe. Stimmt die Zeilenanzahl/Anz. d. Kombinationen (Potenz) und sind keine doppelt usw.
Code: Alles auswählen
1. Zeile: Zeichenvorrat 2. Zeile: Länge 3. bis letzte Zeile: Alle gefundenen Kombinationen
Auch hier OK, das macht SinnEbenso wäre es gut, wenn das Programm die Parameter von der Kommandozeile akzeptiert, dann kann man das testen aller Skripte automatisieren.
Parameter 1: Zeichenvorrat
Parameter 2: Länge
Beispiel:Code: Alles auswählen
./prog.hs "ab" 2
Syntax ist dann: Script <Zeichenvorrat> <Länge> [Min.Länge]
Bzw nur: Script <Zeichenvorrat> <Länge>
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Der Hintergrund meiner Frage ist der Sinn des Skripting-Wettbewerbs. Es wurde in dem Thread wiederholt erwähnt, dass es um Algorithmen geht und dass man den Kleinkram da lieber draussen lässt. Deswegen meine Anmerkung, dass das evtl. unnötiger Kleinkram ist, der keine schwerwiegende Problemstellung beinhaltet und dessen Lösung keinen besonderen Erkenntnisgewinn für alle bringt. Nur eine Anmerkung - ist nicht so wichtig....Mindestlänge...Ob das nun eine extra Schwierigkeit ist weiss ich nicht. Ich habe das mit dabei.
Zuletzt geändert von heisenberg am 18.05.2016 19:32:27, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Dann lassen wir die Mindestlänge weg. Das läuft auch bei mir außerhalb des eigentlichen Algo.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
So. Ich habe mich mal auf einen Kurztrip in die funktionale Programmierung mit Haskell begeben. Da komm' ich mir mal wieder wie der totale Programmieranfänger vor. Aber es hat geklappt!
Jede Rohheit hat ihren Ursprung in einer Schwäche.
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
So, hier ist mal das Prüfscript(Braucht die Pakete lua5.1, lua-filesystem und lua-socket):
39312
EDIT: Habe nochmal eine Zeitmessung eingebaut.
39312
EDIT: Habe nochmal eine Zeitmessung eingebaut.
Zuletzt geändert von heisenberg am 22.05.2016 00:00:57, insgesamt 3-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Super!
Wollte mein Skript gerade dagegen testen, aber es will nicht. Habe das LUA-Skript als rttest.lua gespeichert und bekomme dies (Syntaxfehler!):
$ ./rttest.lua "ab" "3"
./rttest.lua: Zeile 3: --: Kommando nicht gefunden.
./rttest.lua: Zeile 4: --: Kommando nicht gefunden.
./rttest.lua: Zeile 5: --: Kommando nicht gefunden.
./rttest.lua: Zeile 6: Syntaxfehler beim unerwarteten Wort `<'
./rttest.lua: Zeile 6: ` -- Usage: ./check.lua <zeichensatz> <laenge>'
Mein Skript muss als ./sol/inne-rtgen.pl gegeben sein – richtig?
//OK: Es lag an den Einrückungen vom Copy'n'Paste (Habs dann aus dem Textfeld kopiert)
$ ./rttest.lua "ab" "3"
Pruefe alle Loesungen in Unterverzeichnis sol ...
Test result for inne-rtgen.pl : Bestanden
// Die Fehlerfälle sollten auch alle korrekt erkannt werden.
Wollte mein Skript gerade dagegen testen, aber es will nicht. Habe das LUA-Skript als rttest.lua gespeichert und bekomme dies (Syntaxfehler!):
$ ./rttest.lua "ab" "3"
./rttest.lua: Zeile 3: --: Kommando nicht gefunden.
./rttest.lua: Zeile 4: --: Kommando nicht gefunden.
./rttest.lua: Zeile 5: --: Kommando nicht gefunden.
./rttest.lua: Zeile 6: Syntaxfehler beim unerwarteten Wort `<'
./rttest.lua: Zeile 6: ` -- Usage: ./check.lua <zeichensatz> <laenge>'
Mein Skript muss als ./sol/inne-rtgen.pl gegeben sein – richtig?
//OK: Es lag an den Einrückungen vom Copy'n'Paste (Habs dann aus dem Textfeld kopiert)
$ ./rttest.lua "ab" "3"
Pruefe alle Loesungen in Unterverzeichnis sol ...
Test result for inne-rtgen.pl : Bestanden
// Die Fehlerfälle sollten auch alle korrekt erkannt werden.
Zuletzt geändert von Anonymous am 21.05.2016 20:21:23, insgesamt 1-mal geändert.
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Warum hast du Haskell gewählt, also eine funktionale Programmiersprache? Ist hier ein Geschwindigkeitsvorteil gegenüber Perl zu erwarten, oder programmiert es sich einfach besser/eleganter?heisenberg hat geschrieben: Haskell
PS: Ich kenne nur imperative Programmierung(?) und kann etwas Perl...
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Ich möchte etwas funktionale Programmierung lernen und so meinen Programmierhorizont erweitern. Permutationen - wie hier - sind da auch eine geeignete Anwendung. Geschwindigkeitsvorteile sehe ich da jetzt keine. Im übrigen ist funktionale Programmierung sehr gewöhnungsbedürftig (Kannst Du ja dann morgen selbst sehen).
Gelesene Vorteile sind da u. a. höhere Robustheit wegen der statischen Datentypen und dem weitgehenden fehlen von Variablen zum Zwischenspeichern von temporären Daten, sowie höhere Produktivität, wenn man den Kram erst einmal verstanden hat.
Wenn ich da allerdings "Vorteil bei der Wartbarkeit" lese, dann muss ich im Hinblick auf eine (funktionale) Rekursion doch eher lachen - Die Wartung fand ich da eher schwierig.
Weiterer Grund ist: Erhöhte Sicherheit - Niemand versteht mehr Deinen Code. Im Ernst: Ich vermute, dass das ein erhebliches Problem ist, wenn keiner der Kollegen mehr auch nur ansatzweise Deinen Code versteht.
Gelesene Vorteile sind da u. a. höhere Robustheit wegen der statischen Datentypen und dem weitgehenden fehlen von Variablen zum Zwischenspeichern von temporären Daten, sowie höhere Produktivität, wenn man den Kram erst einmal verstanden hat.
Wenn ich da allerdings "Vorteil bei der Wartbarkeit" lese, dann muss ich im Hinblick auf eine (funktionale) Rekursion doch eher lachen - Die Wartung fand ich da eher schwierig.
Weiterer Grund ist: Erhöhte Sicherheit - Niemand versteht mehr Deinen Code. Im Ernst: Ich vermute, dass das ein erhebliches Problem ist, wenn keiner der Kollegen mehr auch nur ansatzweise Deinen Code versteht.
Jede Rohheit hat ihren Ursprung in einer Schwäche.
-
- Beiträge: 3281
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Scripting Contest
Dann mal Butter bei die Fische
Code: Alles auswählen
#!/usr/bin/perl
# Perl: Write once -- never understand again
# RainbowTable-Generator (RTGen)
# Usage: ./rtgen.pl <chars to use> <length>
print "$ARGV[0]\n";
print "$ARGV[1]\n";
my @chars = split "", $ARGV[0];
my $len = $ARGV[1];
my @word = ();
sub show {
for (@word) {
print $chars[$_];
}
print "\n";
}
sub gen {
my $first_char = 0;
my $last_char = scalar(@chars) - 1;
my $word_len = scalar(@word);
my $n = scalar(@chars)**scalar(@word); # Potenz
while ( $n-- > 0 ) {
for ( my $i = 0 ; $i < $word_len ; $i++ ) {
if ( $word[$i] < $last_char ) {
$word[$i]++;
last;
}
$word[$i] = $first_char;
}
show;
}
}
while ( $len-- > 0 ) {
push @word, -1;
gen;
}
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
- heisenberg
- Beiträge: 3540
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: Scripting Contest
Boah ey! Der Code ist echt hart. Ich habe mir den jetzt 1 Stunde angeschaut und immer noch nicht ganz verstanden wie er funktioniert.
Na dann hier nochmal 2 Lösungen von mir:
Na dann hier nochmal 2 Lösungen von mir:
Zuletzt geändert von heisenberg am 22.05.2016 18:08:56, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.