|
|
|
|
$array = array("value0", "value1", "value2")
$array[10] = "value10";
count($array); gäbe mir hier 4 zurück.
Tut mir leid aber für mich ist das ein array wenn array vorne dran steht.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von v!pe am 29.03.2007 14:03]
|
|
|
|
|
|
Weil dein Array eigentlich eine Hashmap ist und PHP dich nicht dazu zwingt mit dich mit dem durchaus vorhandenen und auch relevanten Unterschied zu beschäftigen.
|
|
|
|
|
|
|
Du könntest mit foreach iterieren.
|
PHP: |
foreach($array as $key => $value) {
$lastkey = $key;
}
die $key;
|
|
|
|
|
|
|
|
|
Wie effektiv.
/e: Sag mal Ghandi, hast du ne Ahnung wie Tie::File die Zeilenzerlegung vornimmt ohne die Datei komplett einzulesen? Ich hab irgendwie wenig Lust deren Code zu durchsuchen um das heraus zu finden. D:
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SirSiggi am 29.03.2007 14:09]
|
|
|
|
|
|
|
|
|
|
Und stolz drauf.
/e: Vor allen Dingen weil (nochmal) eine Hashmap etwas völlig anderes ist, als ein Array. Eine Hashmap ist eine Art Ansicht auf ein Array dessen Indexwerte mit einer Hashfunktion und bei Misserfolg (Feld schon belegt z.B.) per suchen von Hand erzeugt/gefunden werden. Das ist natürlich weitaus weniger Effektiv als eine einfache Berechnung der benötigten Speicheradresse.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SirSiggi am 29.03.2007 14:11]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Zitat von SirSiggi
Wie effektiv.
/e: Sag mal Ghandi, hast du ne Ahnung wie Tie::File die Zeilenzerlegung vornimmt ohne die Datei komplett einzulesen? Ich hab irgendwie wenig Lust deren Code zu durchsuchen um das heraus zu finden. D: | | Ich hab weder eine Ahnung was Tie::File tut, noch eine Ahnung was du willst, aber ich würde Spontan auf "Zeichenweise einlesen und bei bestimmten Zeichen (\n) etwas tun" tippen.
|
|
|
|
|
|
|
Bloß das Tie::File mir ein Array-Interface auf eine Text-Datei bietet, ohne diese vorher komplett einzulesen. Also z.B.
$file[10000] um die 10000. Zeile zu erhalten.
Was mir gerade einfällt wäre: Position von Newlines zu speichern. Aber dazu muss ja trotzdem die ganze Datei durchgegangen werden und irgendwie ist Tie::File zu schnell um es so zu machen. D:
Vieleicht ist es aber auch so, keine Ahnung.
|
|
|
|
|
|
|
| Zitat von SirSiggi
Wie effektiv.
/e: Sag mal Ghandi, hast du ne Ahnung wie Tie::File die Zeilenzerlegung vornimmt ohne die Datei komplett einzulesen? Ich hab irgendwie wenig Lust deren Code zu durchsuchen um das heraus zu finden. D:
| |
Ne, keine Ahnung. Hab mich damit nie beschäftigt.
Also wegen dem "wo ist der letzte index"-Problem. Perl hat da keines
|
Code: |
my @array = (1,2,3);
$array[10] = 10;
print scalar @array;
|
|
Gibt erwartungsgemäß 11 raus, schlieslich ist es ja 11 Element lang (0..10)
|
|
|
|
|
|
|
Es ist ja auch ein Array und keine Hashmap.
|
|
|
|
|
|
|
223 Zeichen. Das kleinse PHP Script hat 97
|
|
|
|
|
|
|
Also nach überfliegen der SourceCodes von Tie::File basiert der Trick halt auf viel herumge-seeke im File.
Vermutlich wird die Datei halt einfach einmal Zeilenweise durchgegangen und es werden die Offsets der jeweiligen Zeilenendezeichen gesucht. Daran kann man sich ja dann durch die Dateihangeln und entsprechend dran rumbateln
Ist halt relatief viel Mathematik zum Preis von hoher Geschwindigkeit
|
|
|
|
|
|
|
Ja, ich hab auch gerade reingekuckt.
Ich überleg das Ding in Ruby zu übersetzen... Naja, wenn ich mal viel Zeit hab vieleicht.
| Zitat von GH@NDI
...relatief...
| | relativ
Sorry, aber deine Fogel-F Verbrechen fallen mir immer so extrem auf.
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von SirSiggi am 29.03.2007 14:31]
|
|
|
|
|
|
Das lustige ist ja, das ich an dem Wort hängen blieb
Erst mit f geschrieben, dann gedacht "das sieht doch scheisse aus" und mit v gemacht. Sah irgendwie auch doof aus. Habs dann einfach mit f gelassen. Weis der Schinder warum
|
|
|
|
|
|
|
| Zitat von v!pe
223 Zeichen. Das kleinse PHP Script hat 97
| | Zeig doch mal. Vieleicht finden wir ja gemeinsam noch was.
|
|
|
|
|
|
|
haha ghandi ist dum
|
|
|
|
|
|
|
dum?
/e: Dafür hab ich ein nicht zu vernachlässigendes Problem mit der Groß- und Kleinschreibung von Worten. Fast jeder meiner Posts beinhaltet ordentlich Fehler in die Richtung, wenn ich nicht gerade gezielt drauf achte.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SirSiggi am 29.03.2007 14:43]
|
|
|
|
|
|
|
PHP: |
<pre>
<?php
$f = fopen("tx","r");
if ($f) {
while(!feof($f)) {
$fa = explode(" ",fgets($f));
$p = $fa[0] + ($fa[1] * 79);
$a[$p] = $fa[2];
}
fclose($f);
}
ksort($a);
end($a);
for($x=0; $x < key($a); $x++) {
if ($x%79==0) { $o .= "\n"; $t = ""; }
if ($a[$x]) { $o .= $t.chr($a[$x]); $t = ""; }
else $t .= " ";
}
echo $o;
?>
<pre>
|
|
Mein erster Versuch bei sowas. =) Ohne die Leerschritte und Newlines sinds irgendwas um die 223 Byte.
|
|
|
|
|
|
|
Puhhh... eindenken ist mir jetzt zuviel Arbeit.
|
|
|
|
|
|
|
Also mein Perlscript für das ASCii-Golf hat 104. Erstlingsversuch (um zu testen ob die auf STDIN auch immer nen EOF schicken ) hatte 319
|
|
|
|
|
|
|
| Zitat von TriggerTG
haha ghandi ist dum
| |
Ich schiebe es hier auf die Laptoptastatur. Zumindest verschluckt die erschreckend viele Zeichen
|
|
|
|
|
|
|
|
Code: |
while(<>=~/(.+) (.+) (.+)/){$c[$2][$1]=chr$3}map{map{print$_?$_:' '}@$_;print"\n"}@c;
|
|
86 Zeichen! \o/
Ich hab mal wieder richtig Blut geleckt an den Aufgaben
|
|
|
|
|
|
|
|
|
|
|
Was is denn hier los?
|
|
|
|
|
|
|
Ringelpietz mit anfassen.
/e: So langsam wird man auf uns aufmerksam Trigger.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von SirSiggi am 29.03.2007 15:03]
|
|
|
|
|
|
Irgendwie ist PHP hässlich.
|
|
|
|
|
|
|
| Zitat von SkunkyVillage
PHP ist hässlich.
| |
|
|
|
|
|
|
|
Ich würde das ja auch gerne Kommentarlos quoten, aber dann heissts ja wieder, wir spammen
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |