| 

.NET C# Java Javascript Exception

4
Die Aufgabe lautet folgenermaßen: Gib alle Zahlen von 1 bis 10 aus, die ungerade sind.
Hierbei suche ich die eleganteste Lösung. Die Programmiersprache ist egal!

(Nein es handelt sich um keine Schulaufgabe - aus dem Alter bin ich raus! ;) )
08.09.2009
still_coding 81 2
1
Soll die Aufgabe evtl. später erweitert werden, so dass man einen beliebigen Startpunkt festlegen kann, dann muß man zwingend eine Prüfung auf "ungerade" durchführen. Ist dies nicht der Fall, kann man die Logik fest mit der for-Schleife implementieren und halt mit einer "ungeraden" Zahl beginnen. ;-)
Scout 08.09.2009
Lustig - die Antworten zur Frage lesen sich wie "99 bottles of beer" ;)
gfoidl 08.09.2009
1
@gfoidl:
Mein Favorit
http://99-bottles-of-beer.net/language-perl-737.html
für "99 bottles of beer"

LOL
Damengummistiefel 09.09.2009
24 Antworten
4
Meinst Du eventuell:

For i = 1 To 10
If i Mod 2 = 1 Then
Console.Write i
End If
Next

Modulo...
08.09.2009
Kiko 541 1 3
4
for(int i = 1; i <= 9; i += 2;) {
System.out.println(i);
}

;)
08.09.2009
anonym 141 1
3
c#, linq
var odd = Enumerable.Range(1, 10).Where(num => num%2 != 0);
foreach (var i in odd)
Console.WriteLine(i);
08.09.2009
Felix 490 2 9
Mich würde interessieren wie es hier mit der Performance im Vergleich zur klassischen Schleife aussieht.
Vash 16.09.2009
2
Guten Morgen,

ich denke für PHP ist es so am schicksten:

for( $i=1;$i<11;$i+=2 )
{
print $i;
}


--Mo
08.09.2009
Moritz 41 2
2
Hallo,
in Ruby bspw. so:

puts (0..4).map{|i|i*2+1}

ciao, Heiko
08.09.2009
heisee 41 2
2
print(1,3,5,7,9);
08.09.2009
MiW 1,0k 1 8
So geht's natürlich auch :-)
nate 08.09.2009
2
In Python tuts
for i in range(1,10,2):
print(i)

oder halt
print(1,3,5,7,9) # :D
08.09.2009
Vector 61 1 2
2
Haskell (im Interpreter, ansonsten durch IO wrappen)
a) filter odd [1..10]
b) [s | s <- [1..10], odd s]
08.09.2009
knivil 209 2
2
Egal welche Programmiersprache? Ich hätte da noch Brainfuck!

/**
+++++[->++++++++++<]>-<
+++[->>++++++++++<<]>>++
<<-----[+>.>.<++<]
*/


scherzhafte Grüße ;-)
08.09.2009
Scout 1,4k 2 8
Scout 1,4k 2 8
Cool, funktioniert!
*Das* ist das Eleganteste Programm.
Dooo!
Damengummistiefel 08.09.2009
1
vielleicht mal was rekursives (PHP-Style)

function fn1($value) {
if(bcmod($value,2) != 0) {
printf("%s\r\n",$value);
}
$value++;
if($value < 10) fn1($value);
}


aufzurufen mit:

fn1(1);


Mein Informatik-Lehrer wäre stolz auf mich !
(wenn er nicht schon tot wäre)
08.09.2009
MiW 1,0k 1 8
Sehr schön!
BiX 08.09.2009
1
Rekursivität impliziert keine Eleganz. Und von elegant ist das hier weit entfernt. ;-)
Tomalak 08.09.2009
Tante Wiki sagt: Eleganz (Adjektiv: elegant) bezeichnet den Ausdruck von besonderem Stil und Geschmack in Design, Architektur, Mode, Kunst, aber auch Musik, Sprache. Sie stellt ein ästhetisches Konzept und Ideal dar, das an Schönheit und Grazie (z. B. beim Tanz) orientiert ist.

und ich finde rekursion total sexy :)
MiW 08.09.2009
Nun ja, wie gesagt, bloß weil es rekursiv ist, wird es nicht elegant. Genau wie ein Badezimmer nicht elegant wird, bloß weil goldene Armaturen eingebaut wurden - auch wenn man die toll findet. ;-)
Tomalak 08.09.2009
2
Zudem bedeutet Rekursivität in vielen Fällen ein Leistungsverlust, weil jeder Funktionsaufruf an den Ressourcen nagt. Nun stelle man sich diese Lösung hier vor, wenn der bereich nicht 1-10, sonder 1-10k ist.
Also 10k Funktionsaufrufe für eine Simple Aufgabe hören sich für mich nach nen totalen Overhead an.^^
Flyingmana 08.09.2009
1
JavaScript und syntaktisch ähnliche Sprachen:

for (var i = 0; i < 5; i++) alert(2 * i + 1)
08.09.2009
Tomalak 171 1 2
1
Noch eine in Ruby (1.9):
1.upto(10){|number| puts number if number.odd?}
08.09.2009
J-_-L 321 2 5
1
Ich hätte nochwas in COBOL:
PERFORM VARYING I FROM 1 BY 2 UNTIL I > 10
DISPLAY I
END-PERFORM

Alternativ geht hier natürlich auch:
PERFORM VARYING I FROM 1 BY 1 UNTIL I > 10
DIVIDE I BY 2 GIVING E REMAINDER R
IF R = 1
DISPLAY I
END-IF
END-PERFORM
08.09.2009
Ralf D. 89 2
1
Anweisung: "Gib alle Zahlen von 1 bis 10 aus, die ungerade sind."
Sprache: natürlich
Hardware: Intelligent z.B. Mensch
11.09.2009
stefan.bachert 395 4
0
in rails:
10.times{|i| p i }
08.09.2009
a) nicht rails sondern ruby
b) spuckste alle und nicht nur die ungeraden aus :P
ysf 08.09.2009
0
for (i=1 ; i<=10 ; i++)
{
if (i&1) printf("%d\n",i);
}
08.09.2009
knoepke 101 1 1
In C fänd ich's so schöner:
for(i=1;i<=10;i++)
i&1?printf("%d",i):continue;
Ralf D. 08.09.2009
0
Oder mit JS:

<script type="text/javascript">
for (var i = 1; i <= 10; i++){
if(i%2 != 0)
alert(i);
}
</script>


Vielleicht gibt es aber einen besseren Lösungsansatz.
08.09.2009
BiX 149 1 5
BiX 149 1 5
0
haskell:

print x 
| x `mod` 2 == 1 = print (x-1) ++ (x) <-(da gehören eigentlich eckige klammern hin)
| otherwise = print (x-1)
print 0 = () <-(da gehören eigentlich eckige klammern hin)
08.09.2009
Diese Variante halte ich fuer nicht gelungen, da sie Berechnung und IO mischt.
knivil 08.09.2009
Du kannst mit \[x\] eckige Klamern escapen.
jor 08.09.2009
0
nochmal C mit triärem Operator:
for (i=1 ; i<=10 ; i++)
{
i&1?printf("%d\n",i):i;
}
08.09.2009
knoepke 101 1 1
... ternär bitteschön
-armin- 11.09.2009
...oder trinär bitteschoen, Tippfehler
knoepke 13.09.2009
0
oder
for(i=1;i<10; i++)
{
i = ((i>>1)<<1) + 1; // Wehe der Compiler optimiert das Shiften weg :D
printf("%d\n",i);
}


Allerdings gibt er dann einige ungerade Zahlen mehrfach aus :(
Also eher weniger elegant.
08.09.2009
Vector 61 1 2
0
Hierbei suche ich die eleganteste Lösung. Die Programmiersprache ist egal!


Elegant bedeutet was? Kurz? Idiomatisch?

Vielleicht sowas:
[perl]
# Ausgabe  Bedingung    Liste   
# -------+-----------+----------

print grep $_ % 2, 1 .. 10

wäre in Perl "idiomatisch", um aus
einer Liste (1..10) nur bestimmte Zahlen
auszugeben, die einer Bedingung genügen.

Was passiert, wenn man negative und positive Zahlen
verwendet?
print   grep $_ % 2,  -10 .. 10

Aha, funktioniert auch:
-9 -7 -5 -3 -1 1 3 5 7 9

In anderen Sprachen gibt es dann eben
auch die entsprechenden "Idiome", die
die Leute, die die Sprache mögen, für
elegant halten.

Vielleicht sagst Du noch worauf es Dir ankommt?

Viele Grüße

~~~
08.09.2009
Damengummistiefel 377 1 6
0
ruby
(1..9).step(2){|i| p i}
08.09.2009
ysf 51 1 2
0
PHP (Funktionale Form)

array_walk(
array_filter(
array_keys(array_fill(1, 10, 0)),
create_function('$_','return$_&1;')
),
create_function('$_','echo$_;')
);


Perl-Äquivalent

map print,
grep $_&1,
1 .. 10


Resultat (bei beiden)
1 3 5 7 9


Viel Spass
08.09.2009
Damengummistiefel 377 1 6
0
C#:
for(int i=1;i<=10;i+=2) Console.WriteLine(i);

JavaScript:
for(var i=1;i<=10;i+=2) alert(i);
16.09.2009
Floyd 14,6k 3 9

Stelle deine Programmiersprachen-Frage jetzt!