Japanische Flagge /bzw. Kreis

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Sonntag 24. Februar 2008, 15:06

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 ...
BlackJack

Beitragvon BlackJack » Sonntag 24. Februar 2008, 15:19

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. :-)
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Beitragvon HWK » Sonntag 24. Februar 2008, 18:26

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
lunar

Beitragvon lunar » Sonntag 24. Februar 2008, 18:33

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?
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Beitragvon meneliel » Sonntag 24. Februar 2008, 21:37

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 :)
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Sonntag 24. Februar 2008, 21:50

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) ;-)
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Montag 25. Februar 2008, 18:23

Und die Korrektheit der Programme muss auch noch formal bewiesen werden :P
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Beitragvon numerix » Montag 25. Februar 2008, 18:47

Ihr könnt einem aber auch den ganzen Spaß nehmen ... :(
EyDu
User
Beiträge: 4868
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 25. Februar 2008, 19:00

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ß ;-) !
BlackJack

Re: Japanische Flagge /bzw. Kreis

Beitragvon BlackJack » Freitag 29. April 2011, 20:30

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.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Re: Japanische Flagge /bzw. Kreis

Beitragvon numerix » Freitag 29. April 2011, 21:04

Und ich habe mich von diesem Thread inspirieren lassen für eine Aufgabe des Shortening Contest.
BlackJack

Re: Japanische Flagge /bzw. Kreis

Beitragvon BlackJack » Samstag 30. April 2011, 00:08

@numerix: Bin ja mal gespannt, ob noch jemand mit einer Python 2.5 Lösung <119 Bytes kommt. :-)
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Re: Japanische Flagge /bzw. Kreis

Beitragvon b.esser-wisser » Samstag 30. April 2011, 14:21

Da probier ich gleich mal meine neuen erlang-Kenntnisse aus.
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
BlackJack

Re: Japanische Flagge /bzw. Kreis

Beitragvon BlackJack » Sonntag 1. Mai 2011, 23:02

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;
}
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Re: Japanische Flagge /bzw. Kreis

Beitragvon numerix » Montag 2. Mai 2011, 10:40

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 ...

Wer ist online?

Mitglieder in diesem Forum: Astorek, Bing [Bot]