Seite 7 von 7

Verfasst: Sonntag 24. Februar 2008, 15:06
von numerix
Wie schon vermutet - die Unterschiede sind gering. Eigentlich gibt es gar keine (mehr).

Ich habe nur das unäre Plus anders verteilt (- 1 Zeichen) und die '1' nicht als Zeichen(kette) ausgegeben (- 1 Zeichen).

Here it is (84 Byte):

Code: Alles auswählen

print"P3 90 60 1"
for p in range(5400):c=(p%90-45)**2+(p/90-30)**2>324;print 1,+c,+c
War eine reizvolle Sache. Vielleicht bringt der Apfel wieder mal eine interessante Hausaufgabe mit ...

Verfasst: Sonntag 24. Februar 2008, 15:19
von BlackJack
Als ich noch zwei Schleifen hatte, sah's noch so aus:

Code: Alles auswählen

print'P3 90 60 1'
for b in range(-30,30):
 for c in range(-45,45):a=(b*b+c*c>324)+0;print'1',a,a
Das ist die Lösung, wo ich meinte, dass es fast als "echte" Lösung durchgehen kann wenn man es nicht ganz so "gequetscht" hinschreibt und vielleicht ein oder zwei erklärende Kommentare hinzu fügt. Und die Umwandlung `bool` nach `int` sollte man vielleicht anders schreiben. :-)

Verfasst: Sonntag 24. Februar 2008, 18:26
von HWK
Und hier meine Variante:

Code: Alles auswählen

s='P3 90 60 1'
for i in range(5400):x=i%90-45;y=i/90-30;s+=' 1'+' %i'%(x*x+y*y>324)*2
print s
MfG
HWK

Verfasst: Sonntag 24. Februar 2008, 18:33
von lunar
BlackJack hat geschrieben:Also dann Leute, es ist Sonntag, High Noon. Zieht euren Colt, äh, Code. :-)
Black Jack
Der Geek, der schnell programmiert als sein Schatten

Darf ich das so vermarkten?

Verfasst: Sonntag 24. Februar 2008, 21:37
von meneliel
lunar hat geschrieben:
BlackJack hat geschrieben:Also dann Leute, es ist Sonntag, High Noon. Zieht euren Colt, äh, Code. :-)
Black Jack
Der Geek, der schnell programmiert als sein Schatten

Darf ich das so vermarkten?
und schöner :)

Verfasst: Sonntag 24. Februar 2008, 21:50
von EyDu
Ich würde mal sagen, jetzt fehlt nur noch der formale Beweis, dass es sich bei 84 Zeichen um die kürzeste Lösung handelt (ohne mögliche Importe von Modulen) ;-)

Verfasst: Montag 25. Februar 2008, 18:23
von Leonidas
Und die Korrektheit der Programme muss auch noch formal bewiesen werden :P

Verfasst: Montag 25. Februar 2008, 18:47
von numerix
Ihr könnt einem aber auch den ganzen Spaß nehmen ... :(

Verfasst: Montag 25. Februar 2008, 19:00
von EyDu
Leonidas hat geschrieben:Und die Korrektheit der Programme muss auch noch formal bewiesen werden :P
Da möchte ich einfach mal behaupten, dass dies in diesem Fall nicht so schwierig ist :P

@pütone: Es geht hier doch nicht um Spaß ;-) !

Re: Japanische Flagge /bzw. Kreis

Verfasst: Freitag 29. April 2011, 20:30
von BlackJack
Weil Leonidas in einem anderen Thread meinte man müsste hier noch ein paar weitere Programmiersprachen abdecken, habe ich mal eine Flagge in CBM BASIC V2 geschrieben:

Code: Alles auswählen

10 rem@ £protocol
12 rem@ £fastfor:£shortif:£constant w,h,cx,cy,r,sc,cr
14 rem@ £byte c=2:£word x=fast,y=fast,o:£integer xx,yy
100 ti$="000000"
105 w=40:h=25:cx=int(w/2):cy=int(h/2):r=int((w/4)^2):sc=1024:cr=55296
110 for y=0 to h-1:for x=0 to w-1
120 c=2:xx=x-cx:yy=y-cy:if xx*xx+yy*yy>=r then c=1
130 o=w*y+x:poke sc+o,81:poke cr+o,c:next x,y:print"{home}"ti$
150 goto 150
Laufzeiten in Sekunden:
40 normal,
13 ohne die rem@ mit Basic Boss kompiliert,
10 mit den Optionen und Deklarationen kompiliert.

Re: Japanische Flagge /bzw. Kreis

Verfasst: Freitag 29. April 2011, 21:04
von numerix
Und ich habe mich von diesem Thread inspirieren lassen für eine Aufgabe des Shortening Contest.

Re: Japanische Flagge /bzw. Kreis

Verfasst: Samstag 30. April 2011, 00:08
von BlackJack
@numerix: Bin ja mal gespannt, ob noch jemand mit einer Python 2.5 Lösung <119 Bytes kommt. :-)

Re: Japanische Flagge /bzw. Kreis

Verfasst: Samstag 30. April 2011, 14:21
von b.esser-wisser
Da probier ich gleich mal meine neuen erlang-Kenntnisse aus.

Re: Japanische Flagge /bzw. Kreis

Verfasst: Sonntag 1. Mai 2011, 23:02
von BlackJack
10 Sekunden war mir für den C64 zu langsam, darum habe ich es noch einmal in C geschrieben. Das läuft in <1 Sekunde:

Code: Alles auswählen

#include <stdint.h>
#include <string.h>

#define WIDTH           40
#define HEIGHT          25
#define X_CENTER        (WIDTH / 2)
#define Y_CENTER        (HEIGHT / 2)
#define RADIUS          (WIDTH / 4 * WIDTH / 4)
#define COLOR_WHITE     1
#define COLOR_RED       2
#define SCREEN_CODE     160

int main(void)
{
    uint8_t x, y;
    uint16_t xx, yy;
    register uint8_t *color_ram = (void*) 0xd800;
    
    memset((void*) 0x400, SCREEN_CODE, 1000);
    for (y = 0; y < HEIGHT; ++y) {
        for (x = 0; x < WIDTH; ++x) {
            xx = x - X_CENTER;
            yy = y - Y_CENTER;
            *color_ram++ = (xx * xx + yy * yy >= RADIUS)
                ? COLOR_WHITE : COLOR_RED;
        }
    }
    return 0;
}

Re: Japanische Flagge /bzw. Kreis

Verfasst: Montag 2. Mai 2011, 10:40
von numerix
BlackJack hat geschrieben:@numerix: Bin ja mal gespannt, ob noch jemand mit einer Python 2.5 Lösung <119 Bytes kommt. :-)
Ich tippe mal stark auf "Nein", nachdem es mittlerweile vier 119 Bytes Lösungen gibt, die sich praktisch nicht unterscheiden. Die bisher einzige Python 3 Lösung mit 121 Bytes ist allerdings nicht die kürzest mögliche ...