当前位置:天才代写 > CS代写 > 代写信息科学课业 Informatik代写

代写信息科学课业 Informatik代写

2022-10-15 15:38 星期六 所属: CS代写 浏览:47

Informatik 2

代写信息科学课业 Aufgabe 1: Hangman [30 Punkte] (Abgabe: hangman.c0, hangmanutils.c0) Hangman (zu deutsch Galgenmännchen) ist ein einfaches Buchstabenspiel,

Aufgabe 1: Hangman [30 Punkte] (Abgabe: hangman.c0, hangmanutils.c0)

Hangman (zu deutsch Galgenmännchen) ist ein einfaches Buchstabenspiel, das normalerweise mit Papier und Stift gespielt wird. Diese Aufgabe bringt Hangman mittels C0 aufs Terminal. Das Spielprinzip ist denkbar einfach:

1.

Der Computer wählt aus einem vorhanden Wörterbuch zufällig ein Wort w aus. Alle Buchstaben von w sind durch _ maskiert. Dem Spieler ist anfänglich also nur die Länge von w bekannt: aus dem Wort w = “Dagobah” wird beispielsweise _ _ _ _ _ _ _. Zudem wird ein Galgen (noch ohne Männchen) auf den Bildschirm gezeichnet.

2.     代写信息科学课业

Im nächsten Schritt wählt der Benutzer ein Zeichen c ∈ {‘a’, . . . ,‘z’}. Wir unterscheiden zwei Fälle:

  • Der Buchstabe c kommt in w vor (unabhängig von Groß-/Kleinschreibung): Alle Buchstaben, die c entsprechen, werden aufgedeckt. Wählt der Spieler beispielsweise den Buchstaben c = ‘a’, so wird _ a _ _ _ a _ ausgegeben. Der Galgen bleibt unverändert.
  • Der Buchstabe c kommt nicht in w vor: Der nächste Teil des Männchens am Galgen wird gezeichnet. Die maskierte Buchstabensequenz bleibt unverändert.

Das Zeichen c wird in beiden Fällen in das Array der bereits selektierten Buchstaben aufgenommen: c  kann vom Spieler kein zweites Mal gewählt werden.

3.

Schritt 2. fifindet solange statt, bis der Benutzer alle Buchstaben des Wortes erraten hat oder der Galgen komplett aufgebaut wurde (das ist nach sechs Fehlversuchen der Fall). Im letzteren Fall hat der Spieler verloren und das Wort w wird auf dem Terminal angezeigt. So oder so: danach startet der Computer das Spiel von vorn und wählt ein neues Wort w.

 

代写信息科学课业
代写信息科学课业

 

Hier sind einige Hinweise und Hilfen, die bei der Implementierung von Hangman nützlich sein können:
  • Die sieben Zustände und Darstellungen des Galgenmännchens sind in der Datei hangmanutils.c0 zu finden. Diese könnt ihr mittels #use “hangmanutils.c0” in euren Code einbinden. Natürlich dürft ihr an der Darstellung des Galgens drehen (Erinnerung: in C0-Strings sind nur ASCII-Zeichen mit Codes 0–127 erlaubt). Die Datei hangmanutils.c0 wird am Ende Teil eures ZIP-Files.
  • Das Wörterbuch kann als einfaches Array vom Typ string[] behandelt werden. Folgende Funktion ist dabei denkbar:
/* Build dictionary of n words .
 */
string [] build_dictionary ( int n)
/*@ ensures \ length (\ result ) == n; @*/
{
  string [] dict = alloc_array ( string , n) ;

  dict [0] = " Tatooine ";
  dict [1] = " Hoth ";
           .
           .
           .
  dict [n -1] = " Endor ";
  return dict ;
}
  • Mit der Funktion string readline() (C0-Library conio) kann eine Zeile vom Terminal eingelesen werden (Abschluss mit Enter ). Achtet darauf, lediglich ein Zeichen einzulesen. Bei Eingabe von mehr als einem Zeichen (oder keinem Zeichen) wird die Eingabe verworfen und nochmals zur Eingabe aufgefordert. Der Zustand des Spiels wird dabei nicht verändert. Hinweis: Mit der Tastenkombination CTRL + C kann das Spiel abgebrochen werden.
  • Ihr benötigt auf jeden Fall die Library string (#use <string>) zur Verarbeitung von Zeichenketten. Die Dokumentation der enthaltenen Funktionen fifindet ihr im C0 Library Guide (siehe Forum). Hilfreiche Funktionen könnten unter anderem sein (dies ist keine vollständige Liste):
int string_length(string);
bool string_equal(string, string);
char string_charat(string, int);
string string_tolower(string);
char[] string_to_chararray(string);
  • Ihr dürft die folgenden C0-Libraries verwenden: clock, conio, rand, string, util.

 

Aufgabe 2: Kernel [10 Punkte] (Abgabe: kernel.c0, grayscale_matrix.c0)   代写信息科学课业

In der digitalen Bildverabeitung werden sog. Kernel verwendet, um Filter-Effffekte zu erziehlen, wie wir sie aus Bildverabeitungsprogrammen kennen:

 

 

In der Datei grayscale_matrix.c0 stellen wir euch die aus Übungsblatt 3 bekannten Funktionen zur Umwandlung eines Pixel-Arrays in eine Pixel-Matrix zur Verfügung. Die Funktionen sind leicht abgewandelt: Wir beschränken uns in dieser Aufgabe auf Graustufenbilder, so dass jeder Eintrag pij in Zeile i und Spalte j  der Pixel-Matrix eine Zahl 0 6 x 6 255 enthält, die den Graustufenwert des Pixels an der Koordinate (j,i) beschreibt (identischer Wert für alle drei Farbkanäle RGB). Koordinate (0,0) ist oben links.

  • Die Funktion int[][] grayscale_matrix(int[] pixels, int height, int width) erzeugt eine Pixel-Matrix mit Graustufenwerten aus dem Pixel-Array eines Bildes.
  • Die Funktion image_t image_from_grayscale_matrix(int[][] mat, int height, int width) erzeugt ein Bild aus einer Matrix von Graustufenwerten.

Um ein Bild mit Filter-Effffekt zu erzeugen, wird für jedes einzelne Pixel ein neuer Graustufenwert berechnet. Dazu werden jeweils die Pixel in der unmittelbaren Umgebung dieses Pixels einbezogen. Für jedes Pixel entsteht so eine 3×3 Pixel große Box (linke Markierung in Abbildung 2) von 9 Pixeln, die bei der Berechnung des neuen Pixelwerts (rechte Markierung in Abbildung 2) einbezogen werden:

 

代写信息科学课业
代写信息科学课业

 

Jedes Pixel der Box (Abbildung 2, links) wird zunächst mit dem zugehörigen Eintrag des Kernels multipliziert und das Produkt für alle neun Pixel dann aufsummiert. So entsteht ein Graustufenwert für das neue Pixel (Abbildung 2, rechts). Liegen einzelne Pixel der 3 × 3-Box außerhalb des Bildrandes so werden diese bei der Berechnung der Summe ignoriert.

Beispiel für die Berechnung eines neuen Pixelwertes (97) auf Basis der Pixelwerte im Zentrum (111) und der umgebenden Box im Originalbild (vgl. Abbildung 2) und des Kernels sharpen (Abbildung 3a):

 

 

 

Aufgaben:   代写信息科学课业

  1. Für Pixel am Rand des Bildes geht die Box über den Bildbereich hinaus. Pixel der Box, die außerhalb des Bildbereiches liegen, werden bei der Berechnung des neuen Pixelwertes nicht berücksichtigt (d.h. nicht in die Summe aufgenommen). Schreibe ein Hilfsprädikat bool within(int x, int lo, int hi), das prüft, ob ein Zahlenwert x im Bereich lo 6 x < hi liegt und verwende dieses, um die einbezogenen Pixel auf Pixel im Bildbereich zu beschränken.
  1. Die neu berechneten Graustufenwerte müssen erneut im Zahlenbereich 0 6 x 6 255 liegen. Schreibe dazu eine Hilfsfunktion int clamp(int x, int lo, int hi) die alle Eingabewerte x < lo auf lo und x > hi auf hi abbildet. Alle anderen Zahlenwerte x bleiben unverändert.
  1. Schreibe nun eine Funktion image_t apply_kernel(image_t img, int[][] kernel), die auf jedes Pixel eines gegebenes Graustufenbilds img den gegeben Kernel kernel, entsprechend der oben dargestellten Berechnung, anwendet.

 

Wichtige Hinweise zum Vorgehen:  代写信息科学课业

  • Wandle das Bild zunächst mit der Funktion grayscale_matrix in eine Pixel-Matrix um.
  • Nutze die Pixel in der Matrix der Graustufenwerte in der 3 × 3-Box in der Nachbarschaft jedes Pixels, berechne daraus (auf Basis des Kernels) einen neuen Graustufenwert und halte diesen in einer neuen Pixel-Matrix fest.
  • Teste in der Funktion main deines Programms den Filter-Effffekt der Funktion apply_kernel mit dem bereitgestellten Bild monalisa.png und allen in Abbildung 3a bis 3d gegebenen Kernels.
代写信息科学课业
代写信息科学课业

 

 

更多代写:IOS/Swift代写  网上代考  英国His历史学代修   Problem-Solution Essay代写  Introduction介绍代写  国外大学作业代写

合作平台:essay代写 论文代写 写手招聘 英国留学生代写

 

天才代写-代写联系方式