| Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann. |
Diskussion: Buchstabenpyramide im Forum Programmieraufgaben, in der Kategorie Code Kitchen; eingereicht von Ook! Zitat: Es soll eine Buchstabenpyramide erstellt werden. Dem Benutzer soll es möglich sein, einen Buchstaben einzugeben, auf ...
![]() |
| | #1 (permalink) | |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() Likes: 156 | eingereicht von Ook! Zitat:
Code: A ABA ABCBA
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. | |
| | |
| | #2 (permalink) |
| Registriert seit: 22.03.08 ![]() Likes: 0 | yet anther perl oneliner chop($b = <>) in ein einfaches $b = getc umgeändert.. |
| | |
| HaBOT | |
| |
| | #3 (permalink) |
| Guest Likes: | Java, formatiert Code: fetzer:~> java AlphPyr "H"
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA |
|
| | #4 (permalink) |
| Registriert seit: 21.04.08 ![]() Likes: 0 | Hallo! Meine Java Lösung Code: public class PyraChars {
private int maxChars;
private char[] chars = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
/**
* @param value
*/
public PyraChars(int value) {
System.out.println();
if(value > 90)
value -= 32;
value -= 64;
maxChars = value;
createPyra(1);
}
/**
* @param i Grenze
*/
private void createPyra(int i) {
int charsRow = ((i * 2) - 1);
String s = "";
for(int z=0; z<(maxChars-i); z++)
s += " ";
for(int z=0; z<charsRow; z++) {
if(z < (charsRow / 2))
s += chars[z];
else if(z == (charsRow / 2))
s += chars[(charsRow / 2)];
else
s += chars[(charsRow - z - 1)];
}
System.out.println(s);
if(i < maxChars)
createPyra(i+1);
}
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(" Buchstaben Pyramide\n-------------------------");
System.out.print("Buchstabe eingeben: ");
new PyraChars(readValue());
}
/**
* @return value
*/
public static int readValue() {
try { return new BufferedReader(new InputStreamReader(System.in)).read(); }
catch(IOException ex) { return 0; }
}
} Felix |
| | |
| | #5 (permalink) |
| Registriert seit: 14.04.06 ![]() Likes: 4 | Ich hab's mal als Ansporn genommen, um Brainfuck zu lernen ![]() Code: ++++++++++>++++++++[>++++++++<-]>>,>+++++[<------------->-]<+[>+[>+>+>+<<<-]>>>[<<<+>>>-]<<<>[<<<+.>>>-]>-[<<<<-.>>>>-]<<<<-<<.>>>-] |
| | |
| | #6 (permalink) |
| Registriert seit: 01.08.08 ![]() Likes: 0 | ist zwar schon was her aber die anderen aufgaben die ich gemacht hab sind noch älter hier meine lösung in python Code: l=[]
m=[65]
n=[]
i=0
out=""
a= raw_input("Bitte einen Buchstabe von a-z eingeben: ")
a=a.upper()
if len(a)== 1 and ord(a) in range(65,91):
b=ord(a)-65
if a == "A":
print "A"
else:
print " "*b+"A"
while a not in out:
m += [m[i]+1]
n = m[:]
n.reverse()
del n[0]
l=m[:]
l.extend(n)
j = 0
i += 1
out=" "*(b-i)
while j < len(l):
out +=chr(l[j])
j += 1
print out
else:
print "Ich hab gesagt EINEN BUCHSTABE, du Lulli!" |
| | |
| | #7 (permalink) |
| Registriert seit: 22.03.08 ![]() Likes: 0 | Auch mal in brainfuck: (wirklich gute Aufgabe zum brainfuck-Lernen!) Code: ,>>++++++++[-<++++++++>>>+<<]>>++<<<+[-<->>>+<<]<[>[-<+>>+<]>[-<<->+>]<[->+>.+<<]>>.<[-<+>>-.<]>>.<<+<<] Oder zentriert: Code: ,>>++++++++[-<++++++++>>>+>++++<<<]>>++<<<+[-<->>>+<<]>>>>.<<<<<[[->>>>>>+<.<<<<<]>>>>>>[-<<<<<<+>>>>>>]<<<<<[-<+>>+<]>[-<<->+>]<[->+>.+<<]>>.<[-<+>>-.<]>>.<<+<<] |
| | |
| | #8 (permalink) |
| Moderator ![]() | das ganze in C# : Code: using System;
class BuchstabenPyramide {
public static void Main(string[] args) {
int Spitze = (int)(Convert.ToChar(args[0]));
int Stufen = Spitze - 65;
int w,x,y,z;
for(x=0; x<=Stufen; x++) {
for(w=0; w<Stufen-x; w++) { // Leerzeichen
Console.Write(" ");
}
for(y=0; y<=x; y++) { // Vorwärts
Console.Write("{0}", Convert.ToChar(y+65));
}
for(z=y-2; z>=0; z--) { // ... und Rückwärts
Console.Write("{0}", Convert.ToChar(z+65));
}
Console.WriteLine("");
}
}
} Code: 18:12 xeno@gideon:~/source/csharp/buchstabenpyramide mono bp.exe H
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA |
| | |
| | #9 (permalink) |
| Senior Member Registriert seit: 07.01.03 ![]() Likes: 13 | Ich konnts mir nicht verkneifen, das mal schnell zusammenzuhacken. Den Array-Inhalt hab ich natürlich nicht von Hand geschrieben, sondern mir generieren lassen - ich hab also die Aufgabe tatsächlich gelöst |
| | |
| | #10 (permalink) |
| Registriert seit: 07.03.08 ![]() Likes: 0 | Hier mal etwas exotisch in AHK: Funktion, die eine Variable mit der Buchstabenpyramide zurückgibt. (Eingemittet) Code: pyramid_alpha($char){
Loop, % len := asc($char) - 64
{
Loop, % len - strlen(prev_last)
_space .= a_space
c := chr(65 + A_index - 1)
line .= _space . prev_last . c . suff_last "`n"
prev_last .= c, suff_last := c . suff_last, _space := ""
}
return, line
} |
| | |
| | #11 (permalink) |
| Registriert seit: 02.01.09 ![]() Likes: 0 | Ich hab das mal in C++ geschrieben: C++ Code Wenn euch irgendetwas auffällt, was man unbedingt ändern sollte, zögert nicht mir eine PN zu schicken. |
| | |
| | #12 (permalink) |
| Meins in Ruby, relativ kurz: Code: argv = ARGV[0]; i = 1; a = ("A".."Z").to_a; j = 0
a.each { |part|
if part == argv
j = i+1
end
i += 1
}
i = 1; k = 0; l = j-1
while i < j
print (" "*l)
i.times do
print "#{a[j-(j-k)]}"; k += 1
end
(i-1).times do
print "#{a[j-(j-(k-2))]}"; k -= 1
end
puts; i+=1; k = 0; l -= 1
end Code: athelstan@127.0.0.1:~$ ruby Buchstabenpyramide.rb O
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA | |
| | |
| | #13 (permalink) |
| Registriert seit: 21.04.08 ![]() Likes: 0 | eine nette Python Lösung Code: from itertools import takewhile
def row(c, limit):
rowSpace = (alph.find(limit) - alph.find(c) - 1) * " "
row = "".join(takewhile(lambda x: x != c, alph))
return rowSpace + row + row[::-1][1:] + "\n"
def pyra(limit):
limit = chr(ord(limit)+2)
return "".join(map(lambda c: row(c, limit), takewhile(lambda x: x != limit, alph)))[:-1]
alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print pyra('F') Code: import Data.Char
import Data.List
doIt :: Char -> [String]
doIt limit = map row $ takeWhile (/= limit) $ alph
where
alph = ['A'..'Z']
row c = (rowSpace c 0) ++ (rowAlph c) ++ (drop 1 $ reverse $ rowAlph c)
rowAlph c = takeWhile (/= c) $ alph
rowSpace c i = if i == rowSpaceCnt c then "" else ' ' : rowSpace c (i+1)
rowSpaceCnt c = ((index (limit, 0)) - (index (c, 0)) - 1)
index (c, i) = if i > 25 then 1 else if alph !! i == c then i else index (c, i+1)
pyra :: Char -> String
pyra limit = concat . intersperse "\n" $ doIt (chr $ ord limit + 2)
main :: IO()
main = putStrLn $ pyra 'F' Felix |
| | |
| | #14 (permalink) |
| ne Delphi Version Code: // Delphi
type
TA_Z = 'A'..'Z';
function CharPyramid( const Input: TA_Z ): String;
var
i, j,
k, l,
m: Integer;
begin
j := 0;
k := ORD(Input)-64;
l := -1;
// Summe der Folge Ai = i*2+1 berechnen
for i := 1 to k do
inc( j, i*2+1 );
// Result = Länge - Letzte LFCR (#13#10)
SetLength( Result, j-2 );
for j := 1 to k do
begin
m := (j-1)*2;
inc( l, m+1 );
inc( m, 2 );
for i := 1 to j do
begin
Result[l+i] := chr(64+i);
Result[l+m-i] := chr(64+i)
end;
if j<k then
begin
Result[l+m] := #13;
Result[l+m+1] := #10;
end;
end;
end;
function Center( Input: String ): String;
var
i, j,
k, l: Integer;
begin
j := 1;
for i := 1 to Length(Input) do
if input[i] = #13 then
inc(j);
for i := 1 to j do
begin
l := 0;
if i>1 then
for k := 1 to Length(Input) do
begin
if Input[k] = #13 then
begin
inc( l );
if l = i-1 then
begin
l := k+2;
break;
end;
end;
end;
Insert( StringOfChar( ' ', j-i ), Input, l );
end;
Result := Input;
end;
// Möglicher Aufruf:
// (~Font = Courier New)
Center( CharPyramid( 'Z' ) ); Code: A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA | |
| | |
| | #15 (permalink) |
| Registriert seit: 28.03.09 ![]() Likes: 0 | Hier mal vorab unformatiert in Python 3. Ich glaube, dass ginge auch kürzer Code: alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def turn(str):
try:
i = 1
len_ = len(str)
while i < len_:
str = str + str[(len_ - i -1):(len_ - i)]
i = i +1
return str
except:
print("Leider trat ein Fehler auf!")
def pyramide():
try:
zentrum = input("Mitte der untersten Reihe: ")
i = 0
while i <= alph.index(zentrum):
print(turn(alph[:(i+1)]))
i = i+1
except:
print("Leider trat ein Fehler auf!")
pyramide() |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |