Hilfe 1*1 !

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

Dienstag 8. Februar 2011, 23:11

6510-Assembler für den `xa65`-Crossassembler und dem C64 als Zielplattform:

Code: Alles auswählen

    .zero
a       .byte 0
b       .byte 0
c       .byte 0

    .text
    .word $1000
    *=$1000
    
    lda #1      ; a = 1
    sta a
    
outer_loop
    ldx #1      ; b = 1
    stx b
    dex         ; c = 0
    stx c
    
    lda #13     ; print newline before block
    jsr $ffd2
inner_loop
    clc         ; c += a
    lda c
    adc a
    sta c
    
    ldx b       ; print b
    jsr print_byte
    
    lda #'*'    ; print "*"
    jsr $ffd2
    
    ldx a       ; print a
    jsr print_byte
    
    lda #'='    ; print "="
    jsr $ffd2
    
    ldx c       ; print c
    jsr print_byte
    
    lda #13     ; print newline
    jsr $ffd2
    
    inc b       ; b += 1
    lda #11     ; if b != 11 then repeat loop
    cmp b
    bne inner_loop
    
    inc a       ; a += 1
    cmp a       ; if b != 11 then repeat loop
    bne outer_loop
    
    rts         ; bye...

;---------------------------------
; Print byte value in X register.
print_byte
    lda #0
    jmp $bdcd
EyDu
User
Beiträge: 4874
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Mittwoch 9. Februar 2011, 01:48

Dann will ich mal eine C++-Lösung beisteuern.

Code: Alles auswählen

#include <iostream>

template <int M, int N>
struct Value {
    static void print() { std::cout << M << " * " << N << " = " << M*N << std::endl; }
};

struct Null {
    static void print() { };
};

template <typename H, typename T>
struct List {
    typedef H Head;
    typedef T Tail;
    
    static void print() { Head::print(); Tail::print(); }
};

template <int M, int I, int X>
struct Range {
    typedef List<Value<M, X>, typename Range<M, I-1, X+1>::Result> Result;
    static void print() { Result::print(); }
};

template <int M, int X>
struct Range<M, 0, X> {
    typedef Null Result;
    static void print() { }
};

template <int M, int N, int X>
struct Row {
    typedef List<typename Range<X, N, 1>::Result, typename Row<M-1, N, X+1>::Result> Result;
    static void print() { Result::Head::print(); Result::Tail::print(); }
};

template <int N, int X>
struct Row<0, N, X> {
    typedef Null Result;
    static void print() { }
};

template <int N, int M>
struct Result {
    typedef Row<N, M, 1> Data;
    static void print() { Result::print(); }
};

int main(int argc, char **argv) {
    Result<10, 10>::Data::print();
}
Edit: Eigentlich kann man die Listen auch gleich weglassen.

Code: Alles auswählen

#include <iostream>

template <int M, int N>
struct Mult {
    static void print() {
        std::cout << M << " * " << N << " = " << M*N << std::endl;
    }
};

template <int M, int X, int I>
struct Inner {
    static void print() {
        Mult<M, X>::print();
        Inner<M, X+1, I-1>::print();
    }
};

template <int M, int X>
struct Inner<M, X, 0> {
    static void print() { }
};

template <int M, int X, int I>
struct Outer {
    static void print() {
        Inner<X, 1, M>::print(); Outer<M, X+1, I-1>::print();
    }
};

template <int M, int X>
struct Outer<M, X, 0> {
    static void print() { }
};

template <int M>
struct Einmaleins {
    static void print() { Outer<M, 1, M>::print(); }
};

int main(int argc, char ** argv) {
    Einmaleins<10>::print();
}
Das Leben ist wie ein Tennisball.
Trichter
User
Beiträge: 45
Registriert: Montag 20. April 2009, 10:21

Mittwoch 9. Februar 2011, 12:08

Wann kommt der Brainf*** Code!? ;)
Nebelhom
User
Beiträge: 155
Registriert: Mittwoch 19. Mai 2010, 01:31

Mittwoch 9. Februar 2011, 12:24

hehe, ich warte noch auf ein mit Piet gemaltes bild?
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Mittwoch 9. Februar 2011, 12:58

Ich hab noch PHP :twisted: im Angebot

Code: Alles auswählen

<?php
foreach(range(1,10)as $a) {
        foreach(range(1,10) as $b) {
                print "$a x $b = ".$a*$b."\n";
        }
}
?>
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Mittwoch 9. Februar 2011, 13:05

Pah, PHP, hier kommt Brainfuck :mrgreen:

Code: Alles auswählen

++++++++++>>++++++[<+++++++>-]+>++++++[<++++++++++>-]>++++[<++++++++>-]>>+>>+><
<<<++++++++++[<++++++++++>-]<[>>>>><<<<[>>>>>>+>+<<<<<<<-]>>>>>>>[<<<<<<<+>>>>>
>>-]<-[<<+>+>-]<<[>>+<<-]+>[<->[-]]<[<<<<->>>>[-]]>[-]>[-]>[-]<<<<<<<<-[>>>>>+>
+<<<<<<-]>>>>>>[<<<<<<+>>>>>>-]<>++++++++++<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]<<<[
-]++++++++++>>>>>[<<<<<->>>>>-]<<<[-]++++++++++>>>>[<<<<->>>>-]<<<<<<[>>>>>>>+>
+<<<<<<<<-]   >>>>>   >>>[<<<<<<<<+>>>>>>>>-]++++++++++[<->-]<<<[-]>[-]>[<<+>+>
-]<<[>>+<<-]   +>[   <->[-]]<[<<<<<---------<[>>>>>>>+>+<<<<<<<<-]>>>>>>>>[<<<<
<<<<+>>>>>>>>   -   ]<<[   -]<[-]   >  >    [<<+>+>     -]<<[  >    >+<<-]+>[<<
<<<<->>>>>>->[     -]]<[<   <<<-   <+    >   >>>>   -]>   [-]    ]   <<[-]>[-]>
[-]>[-]>[-]<<<<   <[>>>>>+   >+   <<<  <<<-   ]>   >>>>>   [<  <<<<   <+>>>>>>-
]++++++++++[<-     >-]<<<[-      ]>[-  ]>[<<  +>  +>-]<<[  >>  +<<-]  +>[<->[-]
]<[<<<-------   -   --<[-]+>    >>>[-  ]]<<[  -]   >[-]>   [-  ]>[-]  >[-]>[-]<
<<++++[<<<<<   <[>   >>>+>+<<  <<<-]>  >>>>[  <<<   <<+   >>>  >>-]+  +++++[<++
++++++>-]>-   [>+<-   ]>]<<<<  <<.>.<  <<<<<  <.<<.     >>.>>  >>>>>  >.>.<<<<<
<<<<.<.>.>>>>>>>>>>+++++  ++  +++++[<----<----<----<---->>>>-]<<<<[>>>>++++++++
++<<<<-]>[>>>+<<<-]>[>>>+    +++++++++<<<-]>[>>+<<-]>[>[>+>+<<-]>>[<<+>>-]<<<-]
>>>>++++++++++[<++++++++++  >-]<<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]>>>[-<<<<<<<<+>
>>>>>>>]++++++++++<[->>+<-[>>>]>[[<+>-]>+>>]<<<<<]>>>[-<<<<<<<<<+>>>>>>>>>]<[-<
<<<<<<+>>>>>>>]<<<<<<[-]>[-]>[-]>[-]<<<<<<<++++++++++++[>++++>++++>++++<<<-]>.>
.>.<<<<<<<<<<<<.>>>>>>>>>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<<<<<<]
Edit: Hab mal noch ein paar Sachen gekürzt, wenn jemand noch etwas sieht, was sich weg rationalisieren läßt, her damit :)
Edit2: Nochmal etwas gekürzt und ein schöneres Layout verpasst :mrgreen:
Zuletzt geändert von Xynon1 am Mittwoch 9. Februar 2011, 15:41, insgesamt 2-mal geändert.
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Mittwoch 9. Februar 2011, 13:31

Postgresql SQL :D

Code: Alles auswählen

select a, b, a*b as result from generate_series(1,10) as a(a), generate_series(1,10) as b(b)
mutetella
User
Beiträge: 1690
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Mittwoch 9. Februar 2011, 16:52

Oh mein Gott.... wie seid ihr denn drauf? :shock:
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Mittwoch 9. Februar 2011, 17:10

Na, bestens gelaunt und völlig erledigt(Ich für meinen Teil zumindest), vorallem mein Gehirn. Habe gestern den Abend von 22:30-ca. 2:00Uhr an diesem verdammten Script gesessen und heute meine Mittagspause damit verbracht es fertig zustellen :mrgreen:
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
syntor
User
Beiträge: 88
Registriert: Donnerstag 2. Dezember 2010, 03:56

Mittwoch 9. Februar 2011, 17:58

Xynon1 hat geschrieben:Na, bestens gelaunt und völlig erledigt(Ich für meinen Teil zumindest), vorallem mein Gehirn. Habe gestern den Abend von 22:30-ca. 2:00Uhr an diesem verdammten Script gesessen und heute meine Mittagspause damit verbracht es fertig zustellen :mrgreen:
Aus einem Grund nennt sich die Sprache ja auch Brainfuck :lol:
problembär

Mittwoch 9. Februar 2011, 18:55

Perl-Einzeiler (ginge bestimmt noch kürzer):

Code: Alles auswählen

perl -e 'for(1..10){for $j(1..10){print"\n$_ x $j = ".$_*$j}print"\n"}'
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Mittwoch 9. Februar 2011, 19:06

Laut wc (ohne Optionen aufgerufen) 101 Zeichen mit Golfscript:

Code: Alles auswählen

1:i;{i 10>}{1:j;{j 11<}{j print' x 'print i print' = 'print i j*p j):j;}while n print i):i;}until
Edit: 98 Zeichen :)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7477
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Mittwoch 9. Februar 2011, 19:22

derdon hat geschrieben: Edit: 98 Zeichen :)
Wow, da führt ja meine Basic-Variante mit 59 (respektive BJs Anmerkung 57) Zeichen klar 8)

Ok, Die Länge von BlackJacks Assembler Kompilat könnte da drunter liegen...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Mittwoch 9. Februar 2011, 19:26

Das liegt wahrscheinlich erstens an meinem redundanten Einsatz von print und zweitens an der generellen Herangehensweise (die Art, verschachtelte Schleifen zu verwenden statt map / each). Ich bin mir sicher, dass eine Lösung in weniger als 20 Zeichen in Golfscript möglich ist. Ist halt mein erstes Skript in Golfscript. Solche Wettbewerbe eignen sich gut als Übung :)
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

Mittwoch 9. Februar 2011, 19:42

Beim golfen kann awk auch gerade so mitmachen:

Code: Alles auswählen

$ awk 'BEGIN{for(i=1;i<=10;++i)for(j=1;j<=10;++j)print i" x "j" = "i*j}'
Sieht aber aus wie alle C-Artigen - bis auf den sprichwörtlich nicht vorhandenen Stringverkettungsoperator.
Antworten