mirror of
https://github.com/ASDjonok/OOP_IO-2x_2023.git
synced 2026-04-03 22:01:49 +03:00
Compare commits
41 Commits
83b275cefd
...
ІО-23/30-Ш
| Author | SHA1 | Date | |
|---|---|---|---|
| d43c1fedf4 | |||
| 698bfe413e | |||
| 59fc1ad596 | |||
| 342b1d50b9 | |||
| aadc3f5d05 | |||
| d5cd53f954 | |||
| b00e090791 | |||
| f68dc1a8a7 | |||
| 59f315cacc | |||
| d91c576ab3 | |||
| 49dfcfe457 | |||
| 8e430b94ae | |||
| 46d339f31e | |||
| 2ddeaab94f | |||
| 2b8f88a45f | |||
| 97b2b761e4 | |||
| 4d538d2d04 | |||
| 5f36bd41ae | |||
| 499efa9c78 | |||
| 2c8c807c01 | |||
| 100398953a | |||
| 0d5e3d5ffe | |||
| fd8c37c7cb | |||
| a8cbadbe7d | |||
| 64c9e43742 | |||
| 5ca9ab6c17 | |||
| a97f742be2 | |||
| 2494bea36c | |||
| ca2b85ef9e | |||
| 77f96fafa6 | |||
| 084f131c90 | |||
| 197426e266 | |||
| 661c3641a1 | |||
| fc5704dd15 | |||
| 45ef70b268 | |||
| fe97b8dcde | |||
| 5c8d2bb8a1 | |||
| 6b6076f56c | |||
| 9b08eb0dfc | |||
|
|
9cce8b222e | ||
| 74209977bc |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +0,0 @@
|
||||
Java/Lab 1/Lab_1.class
|
||||
.gitignore
|
||||
Java/Lab 2/Lab_2.class
|
||||
@@ -1,39 +0,0 @@
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Lab_1 {
|
||||
|
||||
public static int protectedInput(String variable_to_read, Scanner input) {
|
||||
int read_variable;
|
||||
do {
|
||||
try {
|
||||
System.out.printf("Enter %s: ", variable_to_read);
|
||||
read_variable = input.nextInt();
|
||||
break;
|
||||
} catch (Exception e) {
|
||||
System.out.printf("%s must be an integer.\n", variable_to_read.toUpperCase());
|
||||
input.nextLine();
|
||||
}
|
||||
} while (true);
|
||||
return read_variable;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int n, m, a, b;
|
||||
|
||||
Scanner input = new Scanner(System.in);
|
||||
|
||||
n = protectedInput("n", input);
|
||||
|
||||
m = protectedInput("m", input);
|
||||
|
||||
a = protectedInput("a", input);
|
||||
|
||||
b = protectedInput("b", input);
|
||||
|
||||
input.close();
|
||||
|
||||
float s = ((float) (b + m) / 2) * (m - b + 1) * (n - a + 1);
|
||||
|
||||
System.out.println("S = " + s);
|
||||
}
|
||||
}
|
||||
33
Java/lab_1/lab_1.java
Normal file
33
Java/lab_1/lab_1.java
Normal file
@@ -0,0 +1,33 @@
|
||||
package OOP.Java.lab_1;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class lab_1 {
|
||||
|
||||
public static int protectedInput(String variableToRead, Scanner input) {
|
||||
do {
|
||||
try {
|
||||
System.out.printf("Enter %s: ", variableToRead);
|
||||
return input.nextInt();
|
||||
} catch (Exception e) {
|
||||
System.out.printf("%s must be an integer.\n", variableToRead.toUpperCase());
|
||||
input.nextLine();
|
||||
}
|
||||
} while (true);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Scanner input = new Scanner(System.in);
|
||||
|
||||
final int n = protectedInput("n", input);
|
||||
final int m = protectedInput("m", input);
|
||||
final int a = protectedInput("a", input);
|
||||
final int b = protectedInput("b", input);
|
||||
|
||||
input.close();
|
||||
|
||||
final float s = ((float) (b + m) / 2) * (m - b + 1) * (n - a + 1);
|
||||
|
||||
System.out.println("S = " + s);
|
||||
}
|
||||
}
|
||||
23
Java/lab_1/lab_1.kt
Normal file
23
Java/lab_1/lab_1.kt
Normal file
@@ -0,0 +1,23 @@
|
||||
package OOP.Java.lab_1
|
||||
|
||||
fun protectedInput(variableName: String): Int {
|
||||
do {
|
||||
try {
|
||||
print("Enter $variableName: ")
|
||||
return readln().toInt()
|
||||
} catch (e: Exception) {
|
||||
println("${variableName.uppercase()} must be an integer!")
|
||||
}
|
||||
} while (true)
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val n: Int = protectedInput("n")
|
||||
val m: Int = protectedInput("m")
|
||||
val a: Int = protectedInput("a")
|
||||
val b: Int = protectedInput("b")
|
||||
|
||||
val s: Float = (b + m).toFloat() / 2 * (m - b + 1) * (n - a + 1)
|
||||
|
||||
println("S = $s")
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
package OOP.Java.lab_2;
|
||||
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Lab_2 {
|
||||
public class lab_2 {
|
||||
|
||||
public static short protectedInput(String inputPrompt, String errorMessage, Scanner input) {
|
||||
short read_variable;
|
||||
@@ -21,32 +26,30 @@ public class Lab_2 {
|
||||
return read_variable;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String format(int number) {
|
||||
int width = String.valueOf(number).length() + 1;
|
||||
String format = "|%" + width + "d ";
|
||||
|
||||
return format;
|
||||
return "|%" + width + "d ";
|
||||
}
|
||||
|
||||
public static double average(short[] row) {
|
||||
@Contract(pure = true)
|
||||
public static double average(@NotNull short[] row) {
|
||||
short sum = 0;
|
||||
|
||||
for (short element : row) {
|
||||
sum += element;
|
||||
}
|
||||
|
||||
double result = sum / row.length;
|
||||
|
||||
return result;
|
||||
return (double) sum / row.length;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
short a, rows = 0, columns = 0;
|
||||
String format;
|
||||
short rows, columns;
|
||||
|
||||
Scanner input = new Scanner(System.in);
|
||||
|
||||
a = protectedInput("Input a constant to multipy a matrix by: ",
|
||||
final short a = protectedInput("Input a constant to multiply a matrix by: ",
|
||||
"A constant must be a short-data type integer, try again.", input);
|
||||
|
||||
System.out.println();
|
||||
@@ -69,7 +72,7 @@ public class Lab_2 {
|
||||
System.out.println();
|
||||
System.out.println("Matrix B:");
|
||||
|
||||
format = format(rows * columns);
|
||||
String format = format(rows * columns);
|
||||
|
||||
for (short i = 0; i < rows; i++) {
|
||||
for (short j = 0; j < columns; j++) {
|
||||
@@ -88,7 +91,7 @@ public class Lab_2 {
|
||||
|
||||
for (short i = 0; i < matrix_B.length; i++) {
|
||||
for (short j = 0; j < matrix_B[i].length; j++) {
|
||||
matrix_B[i][j] *= (short) (a);
|
||||
matrix_B[i][j] *= (a);
|
||||
|
||||
System.out.printf(format, matrix_B[i][j]);
|
||||
}
|
||||
57
Java/lab_3/lab_3.java
Normal file
57
Java/lab_3/lab_3.java
Normal file
@@ -0,0 +1,57 @@
|
||||
package OOP.Java.lab_3;
|
||||
|
||||
public class lab_3 {
|
||||
static int maxStrLength;
|
||||
static String result;
|
||||
|
||||
public static void cSubUtil(StringBuilder stringbuilder, int leftBoundary, int rightBoundary) {
|
||||
String string = stringbuilder.toString().toLowerCase().replaceAll("[^a-z]","");
|
||||
// check if the indices lie in the range of string
|
||||
// and also if it is palindrome
|
||||
while (leftBoundary >= 0 && rightBoundary < string.length() && string.toLowerCase().charAt(leftBoundary) == string.toLowerCase().charAt(rightBoundary)) {
|
||||
// expand the boundary
|
||||
leftBoundary--;
|
||||
rightBoundary++;
|
||||
}
|
||||
// if it's length is greater than maxStrLength update
|
||||
// maxLength and result
|
||||
if (rightBoundary - leftBoundary - 1 >= maxStrLength) {
|
||||
result = string.substring(leftBoundary + 1, rightBoundary);
|
||||
maxStrLength = rightBoundary - leftBoundary - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public static int longestPalSubstr(StringBuilder string)
|
||||
{
|
||||
result = "";
|
||||
maxStrLength = 1;
|
||||
// for every index in the string check palindromes
|
||||
// starting from that index
|
||||
for (int i = 0; i < string.length(); i++) {
|
||||
// check for odd length palindromes
|
||||
cSubUtil(string, i, i);
|
||||
// check for even length palindromes
|
||||
cSubUtil(string, i, i + 1);
|
||||
}
|
||||
System.out.println("Longest palindrome substring is: " + compareStrings(string));
|
||||
return compareStrings(string).length();
|
||||
}
|
||||
|
||||
public static String compareStrings(StringBuilder builder) {
|
||||
for (int leftBoundary = 0; leftBoundary <= builder.length(); leftBoundary++) {
|
||||
for (int rightBoundary = builder.length(); rightBoundary >= leftBoundary; rightBoundary--) {
|
||||
if (result.equals(builder.substring(leftBoundary, rightBoundary).toLowerCase().replaceAll("[^a-z]",""))) {
|
||||
return builder.substring(leftBoundary, rightBoundary);
|
||||
}
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
StringBuilder stringToDetect = new StringBuilder("Eva, can I see bees in a cave?");
|
||||
|
||||
System.out.println("Initial string: " + stringToDetect);
|
||||
System.out.println("Length is: " + longestPalSubstr(stringToDetect));
|
||||
}
|
||||
}
|
||||
11
Java/lab_4/Furniture.kt
Normal file
11
Java/lab_4/Furniture.kt
Normal file
@@ -0,0 +1,11 @@
|
||||
package OOP.Java.lab_4
|
||||
|
||||
class Furniture(val name: String, val material: String, val price: Int, val length: Int, val width: Int, val height: Int) {
|
||||
fun print(nameWidth: Int, materialWidth: Int, priceWidth: Int){
|
||||
print("Furniture stats: {")
|
||||
print("Name: ${this.name.padEnd(nameWidth)} ")
|
||||
print("Material: ${this.material.padEnd(materialWidth)} ")
|
||||
print("Price: ${(this.price.toString() + " cu").padEnd(priceWidth + 3)} ")
|
||||
print("Size: ${this.length}×${this.width}×${this.height}};\n")
|
||||
}
|
||||
}
|
||||
26
Java/lab_4/lab_4.kt
Normal file
26
Java/lab_4/lab_4.kt
Normal file
@@ -0,0 +1,26 @@
|
||||
package OOP.Java.lab_4
|
||||
|
||||
fun main() {
|
||||
val furnitureArray = arrayOf(
|
||||
Furniture("Chair", "Wood", 10, 5, 5, 10),
|
||||
Furniture("Counter-top", "Marble", 1_000, 10, 5, 1),
|
||||
Furniture("Dinner table", "Glass", 500, 15, 10, 1),
|
||||
Furniture("Office table", "Wood", 200, 10, 7, 1),
|
||||
Furniture("Refrigerator", "Stainless steel", 20_000, 8, 4, 10)
|
||||
)
|
||||
|
||||
val maxNameWidth = furnitureArray.maxWith(Comparator.comparingInt { it.name.length }).name.length
|
||||
val maxMaterialWidth = furnitureArray.maxWith(Comparator.comparingInt { it.material.length }).material.length
|
||||
val maxPriceWidth = furnitureArray.maxWith(Comparator.comparingInt { it.price }).price.toString().length
|
||||
|
||||
println("\nUnsorted array:")
|
||||
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
|
||||
|
||||
println("\nSorted alphabetically by name:")
|
||||
furnitureArray.sortBy { it.name }
|
||||
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
|
||||
|
||||
println("\nSorted alphabetically by material:")
|
||||
furnitureArray.sortBy { it.material }
|
||||
for (item in furnitureArray) item.print(maxNameWidth, maxMaterialWidth, maxPriceWidth)
|
||||
}
|
||||
23
Java/lab_5/Letter.kt
Normal file
23
Java/lab_5/Letter.kt
Normal file
@@ -0,0 +1,23 @@
|
||||
package OOP.Java.lab_5
|
||||
|
||||
/**
|
||||
* A class representing a single letter in a word.
|
||||
*
|
||||
* @property character a character value of a Letter.
|
||||
*/
|
||||
class Letter(private val character: Char) {
|
||||
override fun toString(): String {
|
||||
return this.character.toString()
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the two objects of class Letter are "equal".
|
||||
*
|
||||
* @param letter a letter to compare.
|
||||
* @param ignoreCase if set to "true" will ignore the case of Letters compared.
|
||||
* @return "true" if letters are equal and "false" if they aren't.
|
||||
*/
|
||||
fun letterEquals(letter: Letter, ignoreCase: Boolean): Boolean {
|
||||
return this.character.toString().equals(letter.toString(), ignoreCase)
|
||||
}
|
||||
}
|
||||
19
Java/lab_5/Punctuation.kt
Normal file
19
Java/lab_5/Punctuation.kt
Normal file
@@ -0,0 +1,19 @@
|
||||
package OOP.Java.lab_5
|
||||
|
||||
/**
|
||||
* A class representing a punctuation mark following a word or a sentence.
|
||||
*
|
||||
* @property punctuationMark a [String] value of a punctuation mark.
|
||||
*/
|
||||
class Punctuation(var punctuationMark: String) {
|
||||
|
||||
init {
|
||||
if (!"\\p{Punct}".toRegex().containsMatchIn(punctuationMark)) {
|
||||
this.punctuationMark = ""
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return punctuationMark
|
||||
}
|
||||
}
|
||||
35
Java/lab_5/Sentence.kt
Normal file
35
Java/lab_5/Sentence.kt
Normal file
@@ -0,0 +1,35 @@
|
||||
package OOP.Java.lab_5
|
||||
|
||||
/**
|
||||
* A class representing a single sentence is a text.
|
||||
*
|
||||
* @property sentenceArray a [Pair] of [Array]s of [Word] and [Punctuation] objects that make up a sentence.
|
||||
*
|
||||
* @constructor a primary constructor accepts a [Pair] of [Array]s of [Word] and [Punctuation] objects, a secondary one accepts a string representing the entire sentence.
|
||||
*/
|
||||
class Sentence(var sentenceArray: Pair<Array<Word>, Array<Punctuation>>) {
|
||||
|
||||
constructor(
|
||||
sentenceString: String
|
||||
) : this(
|
||||
Pair(
|
||||
sentenceString.split("[\\p{Punct}\\s]+".toRegex()).filter { it.isNotEmpty() }.map { word -> Word(word) }.toTypedArray(),
|
||||
sentenceString.split(" ").map { word -> Punctuation(word.last().toString()) }.toTypedArray()
|
||||
)
|
||||
)
|
||||
|
||||
/**
|
||||
* Returns an array of all [Letter] objects in a sentence.
|
||||
*/
|
||||
fun getAllLetters(): Array<Letter> {
|
||||
var allLetters = arrayOf<Letter>()
|
||||
this.sentenceArray.first.forEach { allLetters += it.letters }
|
||||
return allLetters
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
var sentence = arrayOf<String>()
|
||||
this.sentenceArray.first.indices.forEach {sentence += this.sentenceArray.first[it].toString() + this.sentenceArray.second[it].toString() }
|
||||
return sentence.joinToString(" ")
|
||||
}
|
||||
}
|
||||
83
Java/lab_5/Text.kt
Normal file
83
Java/lab_5/Text.kt
Normal file
@@ -0,0 +1,83 @@
|
||||
package OOP.Java.lab_5
|
||||
|
||||
/**
|
||||
* A class representing the entire text.
|
||||
*
|
||||
* @property textArray a [Pair] of [Array]s of [Sentence] and [Punctuation] objects that make up a text.
|
||||
*
|
||||
* @constructor a primary constructor accepts a [Pair] of [Array]s of [Sentence] and [Punctuation] objects, a secondary one accepts a string representing the entire text.
|
||||
*/
|
||||
class Text(var textArray: Pair<Array<Sentence>, Array<Punctuation>>) {
|
||||
|
||||
constructor(
|
||||
textString: String
|
||||
) : this(
|
||||
Pair(
|
||||
textString.split("[.!?] ?".toRegex()).filter { it.isNotEmpty() }.map { sentence -> Sentence(sentence) }.toTypedArray(),
|
||||
textString.split("(?<=[.!?]) ?".toRegex()).filter { it.isNotEmpty() }.map { sentence -> Punctuation(sentence.last().toString()) }.toTypedArray()
|
||||
)
|
||||
)
|
||||
|
||||
/**
|
||||
* Returns an array of all [Letter] objects in a sentence.
|
||||
*/
|
||||
private fun getAllLetters(): Array<Letter> {
|
||||
var allLetters = arrayOf<Letter>()
|
||||
this.textArray.first.forEach { allLetters += it.getAllLetters() }
|
||||
return allLetters
|
||||
}
|
||||
|
||||
/**
|
||||
* Searches for the longest palindromic substring in a given text.
|
||||
*
|
||||
* @return the longest palindromic substring found.
|
||||
*/
|
||||
fun palindromeSearch(): String {
|
||||
var result = " "
|
||||
|
||||
val letters = this.getAllLetters()
|
||||
|
||||
for (leftBoundary in letters.indices) {
|
||||
for (rightBoundary in letters.lastIndex downTo leftBoundary + 1) {
|
||||
val subToC = letters.sliceArray(leftBoundary..rightBoundary)
|
||||
|
||||
if (subToC.first().letterEquals(subToC.last(), true) && this.checkReverse(subToC) && subToC.size > result.length) {
|
||||
result = subToC.joinToString("")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a given substring is a palindrome.
|
||||
*
|
||||
* Is not case-sensitive.
|
||||
*
|
||||
* @param substring an [Array] of [Letter] objects representing a substring.
|
||||
*
|
||||
* @return "true" is a substring given is a palindrome, "false" if it isn't.
|
||||
*/
|
||||
private fun checkReverse(substring: Array<Letter>): Boolean {
|
||||
var leftBoundary = 0
|
||||
var rightBoundary = substring.lastIndex
|
||||
var result = false
|
||||
val correction = substring.size % 2
|
||||
|
||||
while (leftBoundary < substring.size / 2 && rightBoundary >= substring.size / 2 + correction) {
|
||||
leftBoundary++
|
||||
rightBoundary--
|
||||
result = substring[leftBoundary].letterEquals(substring[rightBoundary], true)
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
override fun toString(): String {
|
||||
var text = arrayOf<String>()
|
||||
this.textArray.first.indices.forEach { text += this.textArray.first[it].toString() + this.textArray.second[it].toString() }
|
||||
return text.joinToString(" ")
|
||||
}
|
||||
}
|
||||
22
Java/lab_5/Word.kt
Normal file
22
Java/lab_5/Word.kt
Normal file
@@ -0,0 +1,22 @@
|
||||
package OOP.Java.lab_5
|
||||
|
||||
/**
|
||||
* A class representing a single word is a sentence.
|
||||
*
|
||||
* @property letters an array of [Letter] objects that make up a word.
|
||||
*
|
||||
* @constructor a primary constructor accepts an array of [Letter] objects, a secondary one accepts a string representing the entire word.
|
||||
*/
|
||||
class Word(var letters: Array<Letter>) {
|
||||
|
||||
override fun toString(): String {
|
||||
val wordString = StringBuilder()
|
||||
this.letters.forEach { wordString.append(it) }
|
||||
|
||||
return wordString.toString()
|
||||
}
|
||||
|
||||
constructor(
|
||||
word: String
|
||||
) : this((word.toCharArray().map { letter -> Letter(letter) }).toTypedArray())
|
||||
}
|
||||
33
Java/lab_6/Album.kt
Normal file
33
Java/lab_6/Album.kt
Normal file
@@ -0,0 +1,33 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents an album by a specific artist, containing multiple tracks.
|
||||
*
|
||||
* @property albumName The name of the album.
|
||||
* @property artist The artist or band associated with the album.
|
||||
* @property tracks An [Array] of tracks included on the album.
|
||||
*/
|
||||
class Album(val albumName: String, val artist: String, val tracks: Array<Track>) {
|
||||
|
||||
/**
|
||||
* Returns an array of tracks within the specified duration range.
|
||||
*/
|
||||
fun tracksInDurationRange(durationRange: ClosedRange<Duration>): Array<Track> {
|
||||
return this.tracks.filter { it.duration in durationRange }.toTypedArray()
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the total duration of all tracks on the album.
|
||||
*/
|
||||
fun totalDuration(): Duration {
|
||||
var totalDuration: Duration = Duration.ZERO
|
||||
this.tracks.forEach { totalDuration += it.duration }
|
||||
return totalDuration
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return "${this.albumName} by ${this.artist}\nTotal duration: ${this.totalDuration()}\nTracks:\n${this.tracks.joinToString("\n")}"
|
||||
}
|
||||
}
|
||||
15
Java/lab_6/Dancepop.kt
Normal file
15
Java/lab_6/Dancepop.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents a track in the Dance-pop style.
|
||||
*
|
||||
* @param numberInAlbum The position of the track on the album.
|
||||
* @param trackName The name of the track.
|
||||
* @param feature The featured artist(s) in the track (nullable if no featured artist).
|
||||
* @param duration The [Duration] of the track.
|
||||
*/
|
||||
class Dancepop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
|
||||
override val style = "Dance-pop"
|
||||
}
|
||||
15
Java/lab_6/Electropop.kt
Normal file
15
Java/lab_6/Electropop.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents a track in the Electropop style.
|
||||
*
|
||||
* @param numberInAlbum The position of the track on the album.
|
||||
* @param trackName The name of the track.
|
||||
* @param feature The featured artist(s) in the track (nullable if no featured artist).
|
||||
* @param duration The [Duration] of the track.
|
||||
*/
|
||||
class Electropop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
|
||||
override val style = "Electropop"
|
||||
}
|
||||
15
Java/lab_6/Interlude.kt
Normal file
15
Java/lab_6/Interlude.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents an interlude track.
|
||||
*
|
||||
* @param numberInAlbum The position of the track on the album.
|
||||
* @param trackName The name of the track.
|
||||
* @param feature The featured artist(s) in the track (nullable if no featured artist).
|
||||
* @param duration The [Duration] of the track.
|
||||
*/
|
||||
class Interlude(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
|
||||
override val style = "Interlude"
|
||||
}
|
||||
15
Java/lab_6/Synthpop.kt
Normal file
15
Java/lab_6/Synthpop.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents a track in the Synth-pop style.
|
||||
*
|
||||
* @param numberInAlbum The position of the track on the album.
|
||||
* @param trackName The name of the track.
|
||||
* @param feature The featured artist(s) in the track (nullable if no featured artist).
|
||||
* @param duration The [Duration] of the track.
|
||||
*/
|
||||
class Synthpop(numberInAlbum: Int, trackName: String, feature: String?, duration: Duration): Track(numberInAlbum, trackName, feature, duration) {
|
||||
override val style = "Synth-pop"
|
||||
}
|
||||
27
Java/lab_6/Track.kt
Normal file
27
Java/lab_6/Track.kt
Normal file
@@ -0,0 +1,27 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration
|
||||
|
||||
/**
|
||||
* Represents a track on an album.
|
||||
*
|
||||
* @param numberInAlbum The position of the track on the album.
|
||||
* @param trackName The name of the track.
|
||||
* @param feature The featured artist(s) in the track (nullable if no featured artist).
|
||||
* @param duration The [Duration] of the track.
|
||||
*/
|
||||
open class Track(val numberInAlbum: Int, val trackName: String, val feature: String?, val duration: Duration) {
|
||||
|
||||
/**
|
||||
* The style or genre of the track.
|
||||
*/
|
||||
open val style = ""
|
||||
|
||||
override fun toString(): String {
|
||||
return if (this.feature == null) {
|
||||
"#${this.numberInAlbum}: ${this.trackName} (${this.duration})"
|
||||
} else {
|
||||
"#${this.numberInAlbum}: ${this.trackName} ft. ${this.feature} (${this.duration})"
|
||||
}
|
||||
}
|
||||
}
|
||||
42
Java/lab_6/main.kt
Normal file
42
Java/lab_6/main.kt
Normal file
@@ -0,0 +1,42 @@
|
||||
package OOP.Java.lab_6
|
||||
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
|
||||
fun main() {
|
||||
|
||||
val chromatica = Album(
|
||||
"Chromatica",
|
||||
"Lady Gaga",
|
||||
arrayOf(
|
||||
Interlude(1, "Chromatica I", null, 1.minutes),
|
||||
Synthpop(2, "Alice", null, 2.minutes + 57.seconds),
|
||||
Dancepop(3, "Stupid Love", null, 3.minutes + 13.seconds),
|
||||
Dancepop(4, "Rain On Me", "Ariana Grande", 3.minutes + 2.seconds),
|
||||
Synthpop(5, "Free Woman", null, 3.minutes + 11.seconds),
|
||||
Electropop(6, "Fun Tonight", null, 2.minutes + 53.seconds),
|
||||
Interlude(7, "Chromatica II", null, 41.seconds),
|
||||
Synthpop(8, "911", null, 2.minutes + 52.seconds),
|
||||
Electropop(9, "Plastic Doll", null, 3.minutes + 41.seconds),
|
||||
Dancepop(10, "Sour Candy", "Blackpink", 2.minutes + 37.seconds),
|
||||
Dancepop(11, "Enigma", null, 2.minutes + 59.seconds),
|
||||
Synthpop(12, "Replay", null, 3.minutes + 6.seconds),
|
||||
Interlude(13, "Chromatica III", null, 27.seconds),
|
||||
Electropop(14, "Sine From Above", "Elton John", 4.minutes + 4.seconds),
|
||||
Synthpop(15, "1000 Doves", null, 3.minutes + 35.seconds),
|
||||
Dancepop(16, "Babylon", null, 2.minutes + 41.seconds)
|
||||
)
|
||||
)
|
||||
|
||||
println("$chromatica\n")
|
||||
|
||||
println("${chromatica.albumName} tracks sorted by musical style:\n${chromatica.tracks.sortedBy { it.style }.joinToString("\n")}\n")
|
||||
|
||||
val durationRange = 1.minutes.. 3.minutes + 30.seconds
|
||||
|
||||
println(
|
||||
"${chromatica.albumName} tracks in a duration range ($durationRange):\n${chromatica.tracksInDurationRange(durationRange).joinToString("\n")}"
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
fn main() {
|
||||
// use text_io::scan;
|
||||
use text_io::read;
|
||||
|
||||
print!("Input: ");
|
||||
|
||||
// read until a whitespace and try to convert what was read into an i32
|
||||
let a: i32 = read!();
|
||||
|
||||
/* let i: u32;
|
||||
print!("Input: ");
|
||||
scan!("{}", i); */
|
||||
|
||||
println!("You have input: {}", a);
|
||||
fn protected_read(variable_name: &str) -> i32 {
|
||||
use text_io::try_read;
|
||||
loop {
|
||||
print!("Enter {}: ", variable_name);
|
||||
let read_result: Result<i32, _> = try_read!();
|
||||
match read_result {
|
||||
Ok(read_integer) => return read_integer,
|
||||
Err(_e) => println!("{} must be an integer!", variable_name.to_uppercase()),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let n: i32 = protected_read("n");
|
||||
let m: i32 = protected_read("m");
|
||||
let a: i32 = protected_read("a");
|
||||
let b: i32 = protected_read("b");
|
||||
|
||||
let s: f32 = ((b + m) as f32 / 2f32) * ((m - b + 1) * (n - a + 1)) as f32;
|
||||
|
||||
println!("S = {}", s);
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc_fingerprint":1109913473729500203,"outputs":{"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/rhinemann/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.69.0 (84c898d65 2023-04-16)\nbinary: rustc\ncommit-hash: 84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc\ncommit-date: 2023-04-16\nhost: x86_64-unknown-linux-gnu\nrelease: 1.69.0\nLLVM version: 15.0.7\n","stderr":""}},"successes":{}}
|
||||
@@ -1,3 +0,0 @@
|
||||
Signature: 8a477f597d28d172789f06886806bc55
|
||||
# This file is a cache directory tag created by cargo.
|
||||
# For information about cache directory tags see https://bford.info/cachedir/
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":17142004090379113646,"profile":9251013656241001069,"path":1684066648322511884,"deps":[[11548802147292551847,"text_io",false,16250147254765824332]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lab_1-21a9cdc6153637a5/dep-bin-lab_1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -1,2 +0,0 @@
|
||||
{"message":"unexpected end of macro invocation","code":null,"level":"error","spans":[{"file_name":"src/main.rs","byte_start":179,"byte_end":186,"line_start":8,"line_end":8,"column_start":18,"column_end":25,"is_primary":true,"text":[{"text":" let a: i32 = scan!();","highlight_start":18,"highlight_end":25}],"label":"missing tokens in macro arguments","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"while trying to match meta-variable `$text:expr`","code":null,"level":"note","spans":[{"file_name":"/home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs","byte_start":6858,"byte_end":6868,"line_start":225,"line_end":225,"column_start":6,"column_end":16,"is_primary":true,"text":[{"text":" ($text:expr, $($arg:expr),*) => {","highlight_start":6,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: unexpected end of macro invocation\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:8:18\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let a: i32 = scan!();\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9m^^^^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;9mmissing tokens in macro arguments\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;10mnote\u001b[0m\u001b[0m: while trying to match meta-variable `$text:expr`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0m/home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs:225:6\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m225\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m ($text:expr, $($arg:expr),*) => {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m| \u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;10m^^^^^^^^^^\u001b[0m\n\n"}
|
||||
{"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;9merror\u001b[0m\u001b[0m\u001b[1m: aborting due to previous error\u001b[0m\n\n"}
|
||||
@@ -1 +0,0 @@
|
||||
d97c05c8356d63be
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":17142004090379113646,"profile":7309141686862299243,"path":1684066648322511884,"deps":[[11548802147292551847,"text_io",false,18437410369655646666]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lab_1-68601d683e1e8856/dep-bin-lab_1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -1 +0,0 @@
|
||||
1e31ad2d831b958b
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":17142004090379113646,"profile":1021633075455700787,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lab_1-6de41bec606e8613/dep-test-bin-lab_1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -1 +0,0 @@
|
||||
03a82760ea6c966b
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":17142004090379113646,"profile":1021633075455700787,"path":1684066648322511884,"deps":[[11548802147292551847,"text_io",false,18437410369655646666]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lab_1-c6f8d37b6207cc41/dep-test-bin-lab_1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
||||
@@ -1 +0,0 @@
|
||||
8860c7066aee2306
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":17142004090379113646,"profile":7309141686862299243,"path":1684066648322511884,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lab_1-ec33eeac96f0d2fc/dep-bin-lab_1"}}],"rustflags":[],"metadata":7797948686568424061,"config":2202906307356721367,"compile_kind":0}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -1 +0,0 @@
|
||||
4c291bccd41e84e1
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":9368524284222934410,"profile":12637318739757120569,"path":17386512851369609810,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/text_io-2d13b918f35cc59d/dep-lib-text_io"}}],"rustflags":[],"metadata":10716249605224554386,"config":2202906307356721367,"compile_kind":0}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
This file has an mtime of when this was started.
|
||||
@@ -1 +0,0 @@
|
||||
caa96dad0bd7deff
|
||||
@@ -1 +0,0 @@
|
||||
{"rustc":3257411903276762393,"features":"[]","target":9368524284222934410,"profile":3735503092003429423,"path":17386512851369609810,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/text_io-8f0db3acf1dd6458/dep-lib-text_io"}}],"rustflags":[],"metadata":10716249605224554386,"config":2202906307356721367,"compile_kind":0}
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-21a9cdc6153637a5: src/main.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-21a9cdc6153637a5.d: src/main.rs
|
||||
|
||||
src/main.rs:
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-68601d683e1e8856.rmeta: src/main.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-68601d683e1e8856.d: src/main.rs
|
||||
|
||||
src/main.rs:
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-6de41bec606e8613.rmeta: src/main.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-6de41bec606e8613.d: src/main.rs
|
||||
|
||||
src/main.rs:
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-c6f8d37b6207cc41.rmeta: src/main.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-c6f8d37b6207cc41.d: src/main.rs
|
||||
|
||||
src/main.rs:
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-ec33eeac96f0d2fc.rmeta: src/main.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/lab_1-ec33eeac96f0d2fc.d: src/main.rs
|
||||
|
||||
src/main.rs:
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,7 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/text_io-2d13b918f35cc59d.rmeta: /home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/libtext_io-2d13b918f35cc59d.rlib: /home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/text_io-2d13b918f35cc59d.d: /home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs
|
||||
|
||||
/home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs:
|
||||
@@ -1,5 +0,0 @@
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/text_io-8f0db3acf1dd6458.rmeta: /home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs
|
||||
|
||||
/home/rhinemann/Disc_D/OOP/OOP/Rust/lab_1/target/debug/deps/text_io-8f0db3acf1dd6458.d: /home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs
|
||||
|
||||
/home/rhinemann/.cargo/registry/src/github.com-1ecc6299db9ec823/text_io-0.1.12/src/lib.rs:
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user