Seite 2 von 4

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:05
von gkuhl
Ja, "I3" steht für einen dreistelligen Integer. Das ganze läuft übrigens auch ohne Lochkarten. Sieht man unter anderen an NumPy, was ganze ohne Papier auskommt. ;) Eine etwas kompaktere Lösung ist mir gerade noch eingefallen:

Code: Alles auswählen

PROGRAM einmaleins

    DO i=1,10
        WRITE(*,1001) (i, j, i*j, j=1,10)
    ENDDO
    
    1001 FORMAT (10(I2, ' x ', I2, ' = ', I3, /))

END PROGRAM

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:15
von snafu
War natürlich nicht ganz ernst gemeint. Von gfortran hab ich z.B. schon mal was gehört. Und gerade habe ich gesehen, dass man das Programm auch einfach durch den GCC jagen könnte.

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:17
von lunar
@snafu: Wenn Du das Programm durch den gcc schickst, dann verwendest Du gfortran ;)

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:24
von snafu
Ja, richtig. Auf diese Info bin ich ja gestoßen als ich einfach mal gfortran in die Adresszeile eingegeben (d.h. an die in Firefox eingebaute Google-Suche übergeben) habe.

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:32
von Leonidas
Mit etwas Glück bin ich diesmal schneller als Hyperion ;)

Code: Alles auswählen

(ns one-times-one
  (:use [clojure.contrib.combinatorics :only (cartesian-product)]))

(let [maximum 10
      numbers (range 1 (+ maximum 1))
      combinations (cartesian-product numbers numbers)]
  (doseq [[a b] combinations]
    (printf "%d * %d = %d\n" a b (+ a b))))
Ist quasi ne 1:1 (oder 1*1?) Übersetzung des entsprechenden Python-Codes. Oha, ein pythonisches Lisp :)

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 18:52
von Hyperion
Leonidas hat geschrieben:Mit etwas Glück bin ich diesmal schneller als Hyperion ;)
Hey, ich hatte tatsächlich überlegt, aber musste dann leider mal los ;-) (Außerdem bin ich ja noch nicht fit in "thinking lisp" ;-) )

Dafür hier mal meine COMMODORE BASIC V2.0 Variante:

Code: Alles auswählen

10 FORA=1TO10:FORB=1TO10:PRINTB"X"A"="A*B:NEXTB:PRINT:NEXTA
Man kann da auch die Einrückungen schöner gestalten, aber da bin ich zu lange raus :-)

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 19:12
von BlackJack
Scheme (mit Bigloo zu übersetzen):

Code: Alles auswählen

(module test (main main))
(define
  (main argv)
  (let outer
       ((a 1))
       (if (<= a 10)
           (begin (let inner
                       ((b 1))
                       (if (<= b 10)
                           (begin (print b " * " a " = " (* a b))
                                  (inner (+ b 1)))))
                  (newline)
                  (outer (+ a 1))))))
@Hyperion: Bei den ``NEXT``\s könntest Du noch die Variablennamen weglassen. Du Speicherplatzverschwender. ;-)

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 19:39
von Hyperion
BlackJack hat geschrieben:Scheme (mit Bigloo zu übersetzen):
@Hyperion: Bei den ``NEXT``\s könntest Du noch die Variablennamen weglassen. Du Speicherplatzverschwender. ;-)
Stimmt. Das ging ja auch ohne 8)

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 19:59
von BlackJack
Smalltalk:

Code: Alles auswählen

1 to: 10 do: [:a |
	1 to: 10 do: [:b |
		Transcript show: ('{2} x {1} = {3}' format: { a. b. a * b. }); cr. ].
	Transcript cr. ].

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 20:29
von cofi
Common Lisp:

Code: Alles auswählen

(defun cartesian-product (a b)
  (loop for i in a
     nconc (loop for j in b
              collect (list i j))))

(flet ((range (min max)
         (loop for i from min to max
            collect i)))
  (let ((numbers (range 1 10)))
    (loop for (i j) in (cartesian-product numbers numbers)
       do (format t "~d * ~d = ~d~%" i j (* i j)))))

Re: Hilfe 1*1 !

Verfasst: Dienstag 8. Februar 2011, 23:11
von BlackJack
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

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 01:48
von EyDu
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();
}

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 12:08
von Trichter
Wann kommt der Brainf*** Code!? ;)

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 12:24
von Nebelhom
hehe, ich warte noch auf ein mit Piet gemaltes bild?

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 12:58
von frabron
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";
        }
}
?>

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 13:05
von Xynon1
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:

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 13:31
von frabron
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)

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 16:52
von mutetella
Oh mein Gott.... wie seid ihr denn drauf? :shock:

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 17:10
von Xynon1
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:

Re: Hilfe 1*1 !

Verfasst: Mittwoch 9. Februar 2011, 17:58
von syntor
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: