treffen:codegolfing:002_gc

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
treffen:codegolfing:002_gc [2017/12/18 09:56]
max
treffen:codegolfing:002_gc [2021/05/05 07:36]
max
Zeile 1: Zeile 1:
-====== 002 CodeGolfing - Zahlenspirale ======+{{:treffen:codegolfing:nautiluscutawaylogarithmicspiral.jpg?400|}} 
 + 
 +[[https://creativecommons.org/licenses/by-sa/3.0/deed.de|CC-BY-SA 3.0]] by [[https://commons.wikimedia.org/wiki/User:Chris_73|Chris 73]] at Wikimedia Commons. [[https://de.wikipedia.org/wiki/Datei:NautilusCutawayLogarithmicSpiral.jpg|Link]] 
 + 
 +====== 002Zahlenspirale ====== 
 + 
 +| Serie | [[treffen:codegolfing|CodeGolfings]] | 
 +| Von | [[user:nopx|nopx]] | 
 +| Datum | 06.Januar 2017 | 
 +| Download | {{ :treffen:20171216_codegolfing_002.pdf |Aufgabenbeschreibung [pdf]}} | 
 +| Schweirigkeit | 3/5 |  
 **Eingabe**:  **Eingabe**: 
 <code> <code>
Zeile 32: Zeile 43:
  
 Dort schauen wir uns die Lösungen an. Dort schauen wir uns die Lösungen an.
- 
-Testfälle werden noch hochladen. 
  
 Bei Fragen: info@vspace.one Bei Fragen: info@vspace.one
 +
 +{{ :treffen:20171216_codegolfing_002.pdf |Download der Aufgabenbeschreibung}}
  
 ==== Tests ==== ==== Tests ====
Zeile 41: Zeile 52:
 testcasesEchoString = [ testcasesEchoString = [
   {"name": "1", "n": 1,"result": "1\n"},   {"name": "1", "n": 1,"result": "1\n"},
-  {"name": "2", "n": 2,"result": "1-2\n--\n"},+  {"name": "2", "n": 2,"result": "1-2\n---\n"},
   {"name": "5", "n": 5,"result": "1-2-3\n----4\n----5\n"},   {"name": "5", "n": 5,"result": "1-2-3\n----4\n----5\n"},
   {"name": "13", "n": 13,"result": "-1--2-3-4\n12-13---5\n11------6\n10--9-8-7\n"},   {"name": "13", "n": 13,"result": "-1--2-3-4\n12-13---5\n11------6\n10--9-8-7\n"},
 +  {"name": "16", "n": 16,"result": "-1--2--3-4\n12-13-14-5\n11-16-15-6\n10--9--8-7\n"},
 ] ]
 </code> </code>
 +
 +
 +==== Lösungen ====
 +=== Max (Perl) 470B ===
 +{{ :treffen:document.pdf |Beschreibung.pdf}}
 +<code>
 +use POSIX;$n=$ARGV[0];$d=ceil sqrt$n;sub v($$){$_[$_[0]<$_[1]]}sub c($$){$_[$_[0]>$_[1]]}sub len{1+length@_[0]}sub g{($x,$y)=@_;$s=0;$l=c(c($x,$y),$d-v($x,$y)-1);$s+=v(1,4*$d-8*$_-4)for 0..$l-1;$u=$d-2*$l;$a=$y-$l;$b=$x-$l;$s+=$a==0?($b+1):$b==$u-1?($u+$a):$a==$u-1?(3*$u-$b-2):$b==0?(4*$u-$a-3):0;$s>$n?0:$s;}for(0..$d-1){$z=$_;for(0..$d-1){$q=$_;$m=0;$g=g($q,$_),$m = $g>$m?$g:$m for 0..$d-1;$j=g($_,$z);print"-"x(($_!=0)+len($m)-len($j));print$j!=0?$j:'-';}print$/;}
 +</code>
 +
 +<code>
 +use POSIX;
 +
 +$n=$ARGV[0];
 +$d=ceil sqrt$n;
 +
 +sub v($$){$_[$_[0]<$_[1]]}
 +sub c($$){$_[$_[0]>$_[1]]}
 +sub len{1+length@_[0]}
 +
 +sub g {
 + ($x,$y)=@_;
 + $s=0;
 + $l=c(c($x,$y),$d-v($x,$y)-1);
 + $s+=v(1,4*$d-8*$_-4) for 0..$l-1;
 +
 + $u=$d-2*$l;
 + $a=$y-$l;
 + $b=$x-$l;
 +
 + $s+=$a==0?($b+1):$b==$u-1?($u+$a):$a==$u-1?(3*$u-$b-2):$b==0?(4*$u-$a-3):0;
 + $s>$n?0:$s;
 +}
 +
 +for(0..$d-1) {
 + $z=$_;
 + for(0..$d-1) {
 + $q=$_;
 + $m=0;
 + $g=g($q,$_),$m = $g>$m?$g:$m for 0..$d-1;
 + $j=g($_,$z);
 + print"-"x(($_!=0)+len($m)-len($j));
 + print$j!=0?$j:'-';
 + }
 + print$/;
 +}
 +</code>
 +
 +
  • treffen/codegolfing/002_gc.txt
  • Zuletzt geändert: 2021/08/25 08:15
  • von max