track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Lysander schrieb: So, hier mal der Original-Code (Der extrem mies formatiert war! Wer macht das denn ohne Not? Sind ja keine langen Zeile darin‽) | for (int i = 0; i < 79; i++) {
if (i < 39)
System.out.print("<");
else if (i == 39)
System.out.print(" ");
else
System.out.print(">");
}
System.out.println();
|
Jo. - Und jetzt machen wir auch mal unsere seine Hausaufgaben, nachdem wir gut ausgeschlafen haben: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 | int i = 0;
// ⬑-----┒
// =========
// for (int i = 0; i < 79; i++) {
// ====== ===
// ⬐-----------┚ ┖-------┒
while (i < 79) { //
if (i < 39) //
System.out.print("<"); //
else if (i == 39) //
System.out.print(" "); //
else //
System.out.print(">"); //
// ⬐-----------------------------┚
i++ ;
}
System.out.println();
|
Offensichtlich ist bei Axion ja jetzt erstmal Schweigen im Walde ... 1 + 1 zusammenzählen mag er nicht. (zumindest verrät er es nicht) track
|
lionlizard
Anmeldungsdatum: 20. September 2012
Beiträge: 6244
Wohnort: Berlin
|
track schrieb: Offensichtlich ist bei Axion ja jetzt erstmal Schweigen im Walde ... 1 + 1 zusammenzählen mag er nicht. (zumindest verrät er es nicht) track
Ich schätze die letzte Bedingung && !deadline.reached() war nicht mehr erfüllt… 😈
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Ganz nebenbei bemerkt, halte ich die Aufgabe für doof! Denn sie verlangt das "falsche" Refactoring! Wenn man die Grenzen doch kennt, ist eine for -Schleife immer einer while -Schleife vorzuziehen. Also wäre es imho wesentlich sinnvoller, eine gegebenes while Konstrukt umzuschreiben! Naja... wer den Code schon so unjavaesque formatiert, macht sich eben auch nicht viel Gedanken über idiomatische Didaktik 👿 So, und hier noch eine funktionale overkill Lösung für das Problem in Python 3:
| from itertools import chain, repeat
"".join(chain(repeat("<", 39), " ", repeat(">", 39)))
> '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
|
😬
|
unbuntuS12
Anmeldungsdatum: 2. Juni 2010
Beiträge: 1816
|
Lysander schrieb: Ganz nebenbei bemerkt, halte ich die Aufgabe für doof! Denn sie verlangt das "falsche" Refactoring! Wenn man die Grenzen doch kennt, ist eine for -Schleife immer einer while -Schleife vorzuziehen.
Der Gedanke kam mir auch...
So, und hier noch eine funktionale overkill Lösung für das Problem in Python 3:
Ach ja, es gibt ja auch schöne Sprachen. ☺ Ich will auch, diesmal in Ruby: | (['<'].cycle(39).to_a + [" "] + ['>'].cycle(39).to_a).join
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11179
Wohnort: München
|
Lysander schrieb: So, und hier noch eine funktionale overkill Lösung für das Problem in Python 3:
| from itertools import chain, repeat
"".join(chain(repeat("<", 39), " ", repeat(">", 39)))
> '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
|
😬
Und die Variante für Tippfaule, die ohne die Spezialitäten aus den itertools auskommt:
| " ".join((39 * "<", 39 * ">"))
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>'
|
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12823
|
unbuntuS12 schrieb:
Ach ja, es gibt ja auch schöne Sprachen. ☺ Ich will auch, diesmal in Ruby: | (['<'].cycle(39).to_a + [" "] + ['>'].cycle(39).to_a).join
|
Da gibt es aber lesbarere Varianten in Ruby: | puts '<' * 39 + ' ' + '>' * 39
|
oder | 39.times {print '<'};print ' ';39.times {print '>'};puts
|
|
unbuntuS12
Anmeldungsdatum: 2. Juni 2010
Beiträge: 1816
|
2 ist ja gemogelt, aber 1 ist in der Tat nochmal deutlich schöner. 😇
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12823
|
unbuntuS12 schrieb: 2 ist ja gemogelt, aber 1 ist in der Tat nochmal deutlich schöner. 😇
Was ist denn da gemogelt? Es gibt noch jede Menge lustige Lösungen: | s=' ';39.times{s='<' << s << '>'};puts s
puts ' '.tap{|s|39.times{s[0,0]='<';s << '>'}}
puts ' '.tap{|s|39.times{s.prepend('<') << '>'}}
|
|
unbuntuS12
Anmeldungsdatum: 2. Juni 2010
Beiträge: 1816
|
Gemogelt in dem Sinne, dass man nur mit dem Semikolons mit einer Zeile auskommt. Am besten lesbar ist aber weiterhin deine 1. Lösung, finde ich.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
| echo {0..39}"<" "=" {0..39}">" | sed 's/[^<>=]//g;s/=/ /'
|
|
lionlizard
Anmeldungsdatum: 20. September 2012
Beiträge: 6244
Wohnort: Berlin
|
Möööönsch, alle hams gewusst und keiner hats ihm gesagt… 😛
|
apt-ghetto
Anmeldungsdatum: 3. Juni 2014
Beiträge: 2943
|
Da die meisten Lösungen nicht in Java angeboten wurden, oder dann nur in verschämt kurzer Form, möchte ich hier noch eine mustergültige Lösung vorstellen: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 | package testpackage;
public class TestClass {
public static void madeMyHomework() {
int index = 0;
while (isExpressionTrue(index)) {
if (isLessThan(index)) {
System.out.print("<");
index = getNextInt(index);
if (index == 39) {
System.out.print(" ");
index = getNextInt(index);
}
} else {
try {
checkIndex(index);
System.out.print(">");
index = getNextInt(index);
} catch (ThisShouldNotHappenException e) {
System.err.println(e.getMessage());
}
}
}
System.out.println();
}
public static void main(String[] args) {
madeMyHomework();
}
private static boolean isExpressionTrue(int variableToCheck) {
return variableToCheck < 79 ? true : false;
}
private static boolean isLessThan(int variableToCheck) {
return variableToCheck < 39 ? true : false;
}
private static int getNextInt(int value) {
return ++value;
}
private static void checkIndex(int value)
throws ThisShouldNotHappenException {
if (value > 79) {
throw new ThisShouldNotHappenException();
}
}
public static class ThisShouldNotHappenException extends Throwable {
private static final long serialVersionUID = 4637459158163148369L;
private String message;
public ThisShouldNotHappenException() {
this.message = "Das hätte eigentlich nicht passieren dürfen! Möglicherweise ist Ihr Computer defekt.";
}
public String getMessage() {
return message;
}
}
}
|
|