Beitrag markiert mit ‘ script

Zum Jubiläum: Hacker.org Scripts und neues Design auf der Homepage

Vorweg möchte ich kurz auf das neue Design meiner Homepage www.michaelschatz.de hinweisen.

Aber jetzt ein paar Scripts, bei denen man auf Hacker.org einsteigen kann, weiter bin ich auch nicht gekommen oder hatte keine Lust mehr. Aber ich will euch mein Wissen nicht vorenthalten:

One Minute Man:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Datei definieren
  $filename = 'test.txt';
// die Datei die überwacht werden soll
  $somecontent = file_get_contents("http://www.hacker.org/challenge/misc/minuteman.php");
 
// Sichergehen, dass die Datei existiert und beschreibbar ist
if (is_writable($filename)) {
 
    // Wir öffnen $filename im "Anhänge" - Modus.
    // Der Dateizeiger befindet sich am Ende der Datei, und
    // dort wird $somecontent später mit fwrite() geschrieben.
    if (!$handle = fopen($filename, "a")) {
         print "Kann die Datei $filename nicht öffnen";
         exit;
    }
 
    // Schreibe $somecontent in die geöffnete Datei.
    if (!fwrite($handle, $somecontent)) {
        print "Kann in die Datei $filename nicht schreiben";
        exit;
    }
 
    print "Fertig, in Datei $filename wurde $somecontent geschrieben";
 
    fclose($handle);
 
} else {
    print "Die Datei $filename ist nicht schreibbar";
}

So, dieses Script wird nun mittels Cronjob jede Minute einen Tag lang gestartet. Am nächsten Tag kurz die Datei durchscrollen, schon ist das Ergebnis schnell sichtbar:
back later
back later
back later
i declare the answer is

Wörter zählen:
Eine Aufgabe ist es, die Anzahl der unterschiedlichen Wörter in einem Text zu zählen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function UnterschiedlicheWoerterErmitteln($Text, $Trennzeichen)
{
    $Text .= " #ENDE#";
 
    for($Token = strtok($Text, $Trennzeichen); $Token != "#ENDE#"; $Token = strtok($Trennzeichen))
    {
        if($Token != "")
        {
            $AnzahlDerWoerter[strtolower($Token)]++;
            $GesamtzahlDerWoerter++;
        }
    }
 
    ksort($AnzahlDerWoerter);
    arsort($AnzahlDerWoerter);
 
    echo"Der Text enthält ",
        $GesamtzahlDerWoerter,
        " unterschiedliche Begriffe.",
        "<ul>";
 
    foreach($AnzahlDerWoerter as $Schluessel=>$Wert)
    {
        echo"<li>",
            $Schluessel,
            " (",
            $Wert,
            ")</li>";
    }
 
    echo"</ul>";
}
 
 
$Text = "text text123 text 234 text";
 
UnterschiedlicheWoerterErmitteln($Text, " ,.!?");

Dann habe ich noch eine tv.php gefunden. Hat wohl irgendetwas mit dem Aufgabennamen zu tun. Auf den ersten blick werden zwei Texte verglichen, und zu viele markiert, welche glaube ich die Antwort ergeben. Wenn ich darüber nachdenke ist das ganz einfach mit Notepad++ (Compare) umzusetzen. Naja, musste es ja in php machen. Hier der Code Tada:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function stringVergleich($string1,$string2,$color) {
    $as1 = explode(" ",$string1);
    $as2 = explode(" ",$string2);
    $ii = count($as1);
    $i = 0;
    do {
        if (!in_array($as1[$i],$as2)) {
            $nas1[$i] = "<font color=\"".$color."\">".$as1[$i]."</font>";
        } else {
            $nas1[$i] = $as1[$i];
        }
        $i++;
    } while ($i < $ii);
    $fs = join(" ",$nas1);
    return $fs;
}
 
$text1="Text 1";
//ENDE Text 1
//START Text Original!!
$text2="Original Text";
 
echo stringVergleich($text1,$text2, $color = "#ff0000");
echo "<br><br><br>";
echo stringVergleich($text2,$text1, $color = "teal");

Das wars von mir und von Hacker.org, einfach logisch denken, dann kommt man auch so ziemlich weit! Viel Spaß wünsche ich noch!