diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/checksums.lock b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/checksums.lock
new file mode 100644
index 0000000..d67e762
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/checksums.lock differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/md5-checksums.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/md5-checksums.bin
new file mode 100644
index 0000000..ed422e3
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/md5-checksums.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/sha1-checksums.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/sha1-checksums.bin
new file mode 100644
index 0000000..c14f641
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/checksums/sha1-checksums.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock
new file mode 100644
index 0000000..3689f1b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/dependencies-accessors/dependencies-accessors.lock differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/dependencies-accessors/gc.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/dependencies-accessors/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.bin
new file mode 100644
index 0000000..95559ba
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.lock b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.lock
new file mode 100644
index 0000000..f7de801
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/executionHistory/executionHistory.lock differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileChanges/last-build.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileChanges/last-build.bin
new file mode 100644
index 0000000..f76dd23
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileChanges/last-build.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.bin
new file mode 100644
index 0000000..b6fbe9c
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.lock b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.lock
new file mode 100644
index 0000000..d1b727c
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/fileHashes/fileHashes.lock differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/gc.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/7.4.2/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/buildOutputCleanup.lock
new file mode 100644
index 0000000..e0e9501
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/cache.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/cache.properties
new file mode 100644
index 0000000..9e2d298
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/cache.properties
@@ -0,0 +1,2 @@
+#Tue Oct 04 18:33:01 MSK 2022
+gradle.version=7.4.2
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/outputFiles.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/outputFiles.bin
new file mode 100644
index 0000000..a840564
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/buildOutputCleanup/outputFiles.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/file-system.probe b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/file-system.probe
new file mode 100644
index 0000000..58b667b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/file-system.probe differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/vcs-1/gc.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/.gradle/vcs-1/gc.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/.gitignore b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/HemmingCoder.iml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/HemmingCoder.iml
new file mode 100644
index 0000000..4a11b6a
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/HemmingCoder.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/Project.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..1bec35e
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/Project.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/codeStyleConfig.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/compiler.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/dbnavigator.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/dbnavigator.xml
new file mode 100644
index 0000000..a397ff1
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/dbnavigator.xml
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/gradle.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/gradle.xml
new file mode 100644
index 0000000..592fdc7
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/gradle.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/jarRepositories.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/jarRepositories.xml
new file mode 100644
index 0000000..fdc392f
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/kotlinc.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/kotlinc.xml
new file mode 100644
index 0000000..b1077fb
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/ktlint.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/ktlint.xml
new file mode 100644
index 0000000..6c881ef
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/ktlint.xml
@@ -0,0 +1,6 @@
+
+
+
+ false
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_0.xml
new file mode 100644
index 0000000..d5714fb
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_apiguardian_apiguardian_api_1_1_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml
new file mode 100644
index 0000000..1fa0fa9
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_annotations_13_0.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_7_10.xml
new file mode 100644
index 0000000..8d8ca77
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_7_10.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_7_10.xml
new file mode 100644
index 0000000..ebf4d64
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_common_1_7_10.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_7_10.xml
new file mode 100644
index 0000000..f816a47
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk7_1_7_10.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_7_10.xml
new file mode 100644
index 0000000..3807fef
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_jdk8_1_7_10.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_7_10.xml
new file mode 100644
index 0000000..53a983c
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_1_7_10.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit5_1_7_10.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit5_1_7_10.xml
new file mode 100644
index 0000000..92cd62e
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_test_junit5_1_7_10.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_6_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_6_0.xml
new file mode 100644
index 0000000..c5efb83
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_api_5_6_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml
new file mode 100644
index 0000000..ba48c80
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_jupiter_junit_jupiter_engine_5_6_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_6_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_6_0.xml
new file mode 100644
index 0000000..e27f0c5
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_commons_1_6_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_6_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_6_0.xml
new file mode 100644
index 0000000..b31e1c9
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_junit_platform_junit_platform_engine_1_6_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml
new file mode 100644
index 0000000..c0ad60c
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/libraries/Gradle__org_opentest4j_opentest4j_1_2_0.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/misc.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/misc.xml
new file mode 100644
index 0000000..b4e6022
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules.xml
new file mode 100644
index 0000000..f05fed8
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.main.iml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.main.iml
new file mode 100644
index 0000000..ae4ed2b
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.main.iml
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.7.10/d70d7d2c56371f7aa18f32e984e3e2e998fe9081/kotlin-stdlib-jdk8-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.7.10/1ef73fee66f45d52c67e2aca12fd945dbe0659bf/kotlin-stdlib-jdk7-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar
+
+
+
+
+
+
+
+
+
+
+
+
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm/1.7.10/c1e3bade3e9795023867dce31404736995037e4f/kotlin-scripting-jvm-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-common/1.7.10/bddf009658701ba5fb98e40e7877dcce7d8695ee/kotlin-scripting-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.7.10/c99c87a6988d8fd8d5142e9ed5c9f34a7cf561ee/kotlin-script-runtime-1.7.10.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.test.iml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.test.iml
new file mode 100644
index 0000000..8d95dda
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/modules/HemmingCoder.test.iml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $MODULE_DIR$/../../build/classes/kotlin/main
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.7.10/d70d7d2c56371f7aa18f32e984e3e2e998fe9081/kotlin-stdlib-jdk8-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test-junit5/1.7.10/1977faecddc1c312be4775e6110d3072f553d89d/kotlin-test-junit5-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-test/1.7.10/4d644a88cc0a386712d4b1c1b4ca748203421e07/kotlin-test-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.7.10/1ef73fee66f45d52c67e2aca12fd945dbe0659bf/kotlin-stdlib-jdk7-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.6.0/b0a75795cf03841d4f9cc54099557baffc11c727/junit-platform-commons-1.6.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.6.0/f29e6318333d2303ce4965c9819cfad08de7d1e5/junit-jupiter-api-5.6.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.0/fc9dff4bb36d627bdc553de77e1f17efd790876c/apiguardian-api-1.1.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar
+
+
+
+
+
+
+
+
+
+
+
+ $MODULE_DIR$/../../build/classes/java/main
+ $MODULE_DIR$/../../build/classes/kotlin/main
+ $MODULE_DIR$/../../build/libs/HemmingCoder-1.0-SNAPSHOT.jar
+
+
+
+
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm/1.7.10/c1e3bade3e9795023867dce31404736995037e4f/kotlin-scripting-jvm-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-common/1.7.10/bddf009658701ba5fb98e40e7877dcce7d8695ee/kotlin-scripting-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.7.10/d2abf9e77736acc4450dc4a3f707fa2c10f5099d/kotlin-stdlib-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10/bac80c520d0a9e3f3673bc2658c6ed02ef45a76a/kotlin-stdlib-common-1.7.10.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar
+ $USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.7.10/c99c87a6988d8fd8d5142e9ed5c9f34a7cf561ee/kotlin-script-runtime-1.7.10.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/vcs.xml b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build.gradle.kts b/Informatics/Labs/Hemming - 2/HemmingCoder/build.gradle.kts
new file mode 100644
index 0000000..cff1f50
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/build.gradle.kts
@@ -0,0 +1,29 @@
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+
+plugins {
+ kotlin("jvm") version "1.7.10"
+ application
+}
+
+group = "org.example"
+version = "1.0-SNAPSHOT"
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation(kotlin("test"))
+}
+
+tasks.test {
+ useJUnitPlatform()
+}
+
+tasks.withType {
+ kotlinOptions.jvmTarget = "1.8"
+}
+
+application {
+ mainClass.set("MainKt")
+}
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/classes/kotlin/main/META-INF/HemmingCoder.kotlin_module b/Informatics/Labs/Hemming - 2/HemmingCoder/build/classes/kotlin/main/META-INF/HemmingCoder.kotlin_module
new file mode 100644
index 0000000..4e7592e
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/classes/kotlin/main/META-INF/HemmingCoder.kotlin_module differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
new file mode 100644
index 0000000..5036096
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream
new file mode 100644
index 0000000..4dafafc
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len
new file mode 100644
index 0000000..b9a3d70
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at
new file mode 100644
index 0000000..76d0437
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i
new file mode 100644
index 0000000..2aee4e1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
new file mode 100644
index 0000000..c08b7ae
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream
new file mode 100644
index 0000000..271ca42
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len
new file mode 100644
index 0000000..541378f
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len
new file mode 100644
index 0000000..a9f80ae
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at
new file mode 100644
index 0000000..ab739f2
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i
new file mode 100644
index 0000000..5a6dbd5
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab
new file mode 100644
index 0000000..8eadf79
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream
new file mode 100644
index 0000000..271ca42
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..541378f
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len
new file mode 100644
index 0000000..a9f80ae
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at
new file mode 100644
index 0000000..34b3bd9
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i
new file mode 100644
index 0000000..5a6dbd5
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab
new file mode 100644
index 0000000..26cd765
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream
new file mode 100644
index 0000000..b3fbe58
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len
new file mode 100644
index 0000000..1c209ae
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len
new file mode 100644
index 0000000..93a595b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at
new file mode 100644
index 0000000..df1bc51
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i
new file mode 100644
index 0000000..0286471
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab
new file mode 100644
index 0000000..853981e
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream
new file mode 100644
index 0000000..a14e187
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len
new file mode 100644
index 0000000..379d85c
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len
new file mode 100644
index 0000000..2a17e6e
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at
new file mode 100644
index 0000000..b30d638
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i
new file mode 100644
index 0000000..61f679b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab
new file mode 100644
index 0000000..2c0cd29
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream
new file mode 100644
index 0000000..c0dc80b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len
new file mode 100644
index 0000000..30b8abe
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len
new file mode 100644
index 0000000..ec8f944
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
new file mode 100644
index 0000000..c6f8f61
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i
new file mode 100644
index 0000000..062c681
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab
new file mode 100644
index 0000000..40f4998
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream
new file mode 100644
index 0000000..4dafafc
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len
new file mode 100644
index 0000000..b9a3d70
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at
new file mode 100644
index 0000000..fcd61a5
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i
new file mode 100644
index 0000000..2aee4e1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab
new file mode 100644
index 0000000..2ceb12b
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/counters.tab
@@ -0,0 +1,2 @@
+2
+0
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab
new file mode 100644
index 0000000..3d0aca3
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream
new file mode 100644
index 0000000..4dafafc
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len
new file mode 100644
index 0000000..b9a3d70
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len
new file mode 100644
index 0000000..01bdaa1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at
new file mode 100644
index 0000000..60c3fbb
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i
new file mode 100644
index 0000000..63b6020
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab
new file mode 100644
index 0000000..a880e23
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream
new file mode 100644
index 0000000..6e7a926
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len
new file mode 100644
index 0000000..eb52963
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
new file mode 100644
index 0000000..93a595b
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at
new file mode 100644
index 0000000..38d41fb
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i
new file mode 100644
index 0000000..6936967
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab
new file mode 100644
index 0000000..e84dbd0
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
new file mode 100644
index 0000000..26423e1
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len
new file mode 100644
index 0000000..180f383
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
new file mode 100644
index 0000000..b492c4d
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values
new file mode 100644
index 0000000..3741724
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
new file mode 100644
index 0000000..016ce0e
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s
new file mode 100644
index 0000000..5a1cdbe
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.s
@@ -0,0 +1 @@
+؉ńρɁɁƆҎډܐۉ͒~ς߅
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i
new file mode 100644
index 0000000..292fa53
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len
new file mode 100644
index 0000000..131e265
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/last-build.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/last-build.bin
new file mode 100644
index 0000000..9290f24
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/cacheable/last-build.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/local-state/build-history.bin b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/local-state/build-history.bin
new file mode 100644
index 0000000..8fc0127
Binary files /dev/null and b/Informatics/Labs/Hemming - 2/HemmingCoder/build/kotlin/compileKotlin/local-state/build-history.bin differ
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/gradle.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/gradle.properties
new file mode 100644
index 0000000..7fc6f1f
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/gradle.properties
@@ -0,0 +1 @@
+kotlin.code.style=official
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/gradle/wrapper/gradle-wrapper.properties b/Informatics/Labs/Hemming - 2/HemmingCoder/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..60c76b3
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
\ No newline at end of file
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew b/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew
new file mode 100644
index 0000000..1b6c787
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew
@@ -0,0 +1,234 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+ APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+ [ -h "$app_path" ]
+do
+ ls=$( ls -ld "$app_path" )
+ link=${ls#*' -> '}
+ case $link in #(
+ /*) app_path=$link ;; #(
+ *) app_path=$APP_HOME$link ;;
+ esac
+done
+
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
+
+APP_NAME="Gradle"
+APP_BASE_NAME=${0##*/}
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+ echo "$*"
+} >&2
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+ CYGWIN* ) cygwin=true ;; #(
+ Darwin* ) darwin=true ;; #(
+ MSYS* | MINGW* ) msys=true ;; #(
+ NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD=$JAVA_HOME/jre/sh/java
+ else
+ JAVACMD=$JAVA_HOME/bin/java
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD=java
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+ case $MAX_FD in #(
+ max*)
+ MAX_FD=$( ulimit -H -n ) ||
+ warn "Could not query maximum file descriptor limit"
+ esac
+ case $MAX_FD in #(
+ '' | soft) :;; #(
+ *)
+ ulimit -n "$MAX_FD" ||
+ warn "Could not set maximum file descriptor limit to $MAX_FD"
+ esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+ APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+ CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+ JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ for arg do
+ if
+ case $arg in #(
+ -*) false ;; # don't mess with options #(
+ /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+ [ -e "$t" ] ;; #(
+ *) false ;;
+ esac
+ then
+ arg=$( cygpath --path --ignore --mixed "$arg" )
+ fi
+ # Roll the args list around exactly as many times as the number of
+ # args, so each arg winds up back in the position where it started, but
+ # possibly modified.
+ #
+ # NB: a `for` loop captures its iteration list before it begins, so
+ # changing the positional parameters here affects neither the number of
+ # iterations, nor the values presented in `arg`.
+ shift # remove old arg
+ set -- "$@" "$arg" # push replacement arg
+ done
+fi
+
+# Collect all arguments for the java command;
+# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
+# shell script including quotes and variable substitutions, so put them in
+# double quotes to make sure that they get re-expanded; and
+# * put everything else in single quotes, so that it's not re-expanded.
+
+set -- \
+ "-Dorg.gradle.appname=$APP_BASE_NAME" \
+ -classpath "$CLASSPATH" \
+ org.gradle.wrapper.GradleWrapperMain \
+ "$@"
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+ printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+ xargs -n1 |
+ sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+ tr '\n' ' '
+ )" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew.bat b/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew.bat
new file mode 100644
index 0000000..107acd3
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/gradlew.bat
@@ -0,0 +1,89 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/settings.gradle.kts b/Informatics/Labs/Hemming - 2/HemmingCoder/settings.gradle.kts
new file mode 100644
index 0000000..c3688d5
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/settings.gradle.kts
@@ -0,0 +1,3 @@
+
+rootProject.name = "HemmingCoder"
+
diff --git a/Informatics/Labs/Hemming - 2/HemmingCoder/src/main/kotlin/Main.kt b/Informatics/Labs/Hemming - 2/HemmingCoder/src/main/kotlin/Main.kt
new file mode 100644
index 0000000..d604933
--- /dev/null
+++ b/Informatics/Labs/Hemming - 2/HemmingCoder/src/main/kotlin/Main.kt
@@ -0,0 +1,217 @@
+import kotlin.math.pow
+import kotlin.math.abs
+
+fun main(args: Array) {
+
+ println("0 - Кодировать bin")
+ println("1 - Декодировать и исправить bin по хеммингу")
+
+ when (readLine()!!.trim()) {
+ "0" -> coder()
+ "1" -> decoder()
+ }
+}
+
+fun coder() {
+ println("Введите битовую последовательность")
+ val bytes = readLine()!!.trim()
+ println(Coder(bytes).encode().toString())
+}
+
+fun decoder() {
+ println("Введите закодированную последовательность")
+ val raw = readLine()!!.trim()
+
+ var bytes = raw
+
+ if (bytes.isNotBlank()) {
+
+ println("Ввод корректен")
+ println("Парсинг строки...")
+
+ var control_r = ""
+
+ var s = 0
+ var index = 0 // 0(1), 1(2), 3(4) ...
+
+ while (index < bytes.length - 1) {
+ control_r += bytes[index].toString()
+ val arr = bytes.toCharArray()
+ arr[index] = '-'
+ bytes = String(arr)
+ s++
+ index = 2.0.pow(s).toInt() - 1
+ }
+
+ val info_r: String = bytes.filter { it != '-' }
+
+ printBits(info_r, control_r)
+
+ println("Перерасчёт...")
+ println(Coder(info_r).encode().controlSequence)
+
+ if (Coder(info_r).encode().str == raw) {
+ println("В исходной последовательности нет ошибок")
+ } else {
+ println("Ошибка")
+ Coder.repair(raw, true)
+ }
+
+ }
+
+ println()
+ main(arrayOf())
+
+}
+
+private fun printBits(info: String, control: String) {
+ print("Информационные биты исходные: ")
+
+ info.toCharArray().forEachIndexed { index, c ->
+ print("i$index = $c; ")
+ }
+
+ print("\nКонтрольные биты исходные: ")
+
+ control.toCharArray().forEachIndexed { index, c ->
+ print("r$index = $c; ")
+ }
+
+ println()
+
+}
+
+operator fun String.set(index: Int, value: String): String {
+ val chars = this.toCharArray()
+ chars[index] = value[0]
+ this.chars()
+ return String(chars)
+}
+
+fun String.insert(index: Int, string: String): String {
+ return this.substring(0, index) + string + this.substring(index)
+}
+
+fun String.invert(): String {
+ return this.toCharArray().reversedArray().concatToString()
+}
+
+class Coder(private val bits: String) {
+ fun encode(): HemmingResult {
+
+ var str = bits
+
+ var s = 0
+ var index = 0 // 0(1), 1(2), 3(4) ...
+
+ while (index < str.length - 1) {
+ str = str.insert(index, "-")
+
+ s++
+ index = 2.0.pow(s).toInt() - 1
+ }
+
+ //println(str)
+
+ s = 0
+ while (str.count { it == '-' } > 0) {
+
+ val bitpow = 2.0.pow(s).toInt()
+
+ var sum = 0
+
+ for (i in bitpow until str.length + 1 step bitpow * 2) {
+ val x: String = if (bitpow == 1) {
+ str[i - 1].toString()
+ } else {
+ try {
+ str.substring(i - 1, i + bitpow - 1)
+ } catch (e: StringIndexOutOfBoundsException) {
+ str.substring(i - 1)
+ }
+ }
+ sum += x.count { it == '1' }
+ }
+ str = str.replaceFirst("-", (sum % 2).toString())
+ s++
+ }
+
+ return HemmingResult(str)
+
+ }
+
+ data class HemmingResult(
+ var str: String
+ ) {
+ var infoSequence: String
+ var controlSequence: String = ""
+
+ init { // делим на контрольную и информационную последовательности
+ var result = str
+ var s = 0
+ var index = 0 // 0(1), 1(2), 3(4) ...
+
+ while (index < result.length - 1) {
+ controlSequence += result[index].toString()
+ val q = result.toCharArray()
+ q[index] = '-'
+ result = String(q)
+ s++
+ index = 2.0.pow(s).toInt() - 1
+ }
+
+ infoSequence = result.filter { it != '-' }
+ }
+ }
+
+ companion object {
+ private fun getInfo(str: String): String {
+ var result = str
+ var s = 0
+ var index = 0 // 0(1), 1(2), 3(4) ...
+ var controlSequence = ""
+ var infoSequence = ""
+
+ while (index < result.length - 1) {
+ controlSequence += result[index].toString()
+ val q = result.toCharArray()
+ q[index] = '-'
+ result = String(q)
+ s++
+ index = 2.0.pow(s).toInt() - 1
+ }
+
+ infoSequence = result.filter { it != '-' }
+ return infoSequence
+ }
+
+ fun repair(raw: String, logging: Boolean = false): HemmingResult {
+ val res = HemmingResult(raw)
+ val raw_control = res.controlSequence
+ var syndrom = ""
+ Coder(res.infoSequence).encode().controlSequence.toCharArray().forEachIndexed { index, c ->
+ syndrom += if (c != raw_control[index])
+ "1"
+ else
+ "0"
+ }
+ val err_index = (syndrom.invert()).toInt(2) - 1
+ if (logging) {
+ println("Синдром: $syndrom")
+ println("Индекс ошибки: $err_index")
+ }
+ var new = res.str
+ val q = new.toCharArray()
+ q[err_index] = if (q[err_index] == '1') '0' else '1'
+ new = q.concatToString()
+
+ println("Исправленная полная последовательность: $new")
+ println("Исходная посылка: ${getInfo(new)}")
+
+ return Coder(new).encode()
+ }
+ }
+
+}
+
+
diff --git a/Informatics/Labs/Regex - 3/.idea/.gitignore b/Informatics/Labs/Regex - 3/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/Informatics/Labs/Regex - 3/.idea/Regex - 3.iml b/Informatics/Labs/Regex - 3/.idea/Regex - 3.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/Regex - 3.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/Project_Default.xml b/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..ff21f07
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/profiles_settings.xml b/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/.idea/misc.xml b/Informatics/Labs/Regex - 3/.idea/misc.xml
new file mode 100644
index 0000000..32d0a90
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/.idea/modules.xml b/Informatics/Labs/Regex - 3/.idea/modules.xml
new file mode 100644
index 0000000..f3ea113
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/.idea/vcs.xml b/Informatics/Labs/Regex - 3/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Informatics/Labs/Regex - 3/main.py b/Informatics/Labs/Regex - 3/main.py
new file mode 100644
index 0000000..39aabbc
--- /dev/null
+++ b/Informatics/Labs/Regex - 3/main.py
@@ -0,0 +1,79 @@
+import random
+import re
+
+
+def generateEmojiByISU(isu):
+ eyes = [":", ";", "X", "8", "="]
+ nose = ["-", "<", "-{", "<{"]
+ month = ["(", ")", "O", "|", "\\", "/", "P"]
+ return eyes[isu % 5] + nose[isu % 4] + month[isu % 7]
+
+
+def generateTestEmojiStr():
+ list = ["hello", "world", "kotlin", "is", "cool", "and", "fun", "---", "I", "like", "it", "a", "lot"]
+ count = random.randrange(start=2, stop=6)
+ print("Emoji count expected = " + str(count))
+ print("emoji = " + "\"" + generateEmojiByISU(isu) + "\"")
+ for i in range(count):
+ list.append(generateEmojiByISU(isu))
+ random.shuffle(list)
+ teststr = ' '.join(list)
+ print("Autotest str: \"", teststr, "\"", sep="")
+ countEmoji(teststr)
+
+
+def countEmoji(emojistring):
+ print("Emoji count = " + re
+ .findall(generateEmojiByISU(isu), emojistring).__len__().__str__())
+
+
+print("1 task\n")
+print("ISU Number: ", end="")
+isu = int(input())
+generateTestEmojiStr()
+
+print("\ndop task 1")
+print("Variant №" + str(isu % 6) + " //isu number doesn't matter")
+
+
+def generateVT():
+ return random.choice(["ВТ - лучшая кафедра ИТМО", "ВТ - ван лав ИТМО", "ВТ плюс ИТМО = ♥"])
+
+
+def generateText(log=False):
+ list = ["Университет", "Привет", "Другие, ", "ВТ вообще не очень хорошая кафедра ИТМО, но в в принципе ок",
+ "Слова, ", "Текст", "Студент", "Осмысленность.", "вф", ":):):)", "Ректор", "qowei@niuitmo.tu"]
+ count = random.randrange(start=1, stop=2)
+ if log:
+ print("Count expected = " + str(count))
+ for i in range(count):
+ list.append(generateVT())
+ random.shuffle(list)
+ teststr = ' '.join(list)
+ if log:
+ print("Autotest str: \"", teststr, "\"", sep="")
+ return teststr
+
+
+def countVT():
+ print("Count = " + re.findall(r"ВТ(\s*?\S*?\s*?){1,4}ИТМО", generateText(True)).__len__().__str__())
+ print((re.findall(r"ВТ(?:\s*?\S*?\s*?){1,4}ИТМО", generateText())[0]))
+
+
+countVT()
+
+print("\ndop task 2")
+print("Variant №" + str(isu % 4) + " //isu number doesn't matter")
+
+
+def generateExpr():
+ return str(random.randint(0, 100)) + " + " + str(random.randint(0, 100)) + " = " + str(random.randint(0, 100))
+
+def expr():
+ exp = generateExpr()
+ print("Autotest str: " + exp)
+ find = re.findall(r"\d+", exp)
+ result = str(3*int(find[0])**2 + 5) + " + " + str(3*int(find[1])**2 + 5) + " = " + str(3*int(find[2])**2 + 5)
+ print(result)
+
+expr()
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/artifacts/Lab0.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/artifacts/Lab0.xml
new file mode 100644
index 0000000..b0a99a4
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/artifacts/Lab0.xml
@@ -0,0 +1,11 @@
+
+
+ $PROJECT_DIR$
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/dbnavigator.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/dbnavigator.xml
new file mode 100644
index 0000000..508337b
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/dbnavigator.xml
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/misc.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/misc.xml
new file mode 100644
index 0000000..0548357
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/modules.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/modules.xml
new file mode 100644
index 0000000..010ee29
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/uiDesigner.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/vcs.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/.idea/workspace.xml b/Programming/Labs/First - Basics of Java development/Lab0/.idea/workspace.xml
new file mode 100644
index 0000000..684be5b
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/.idea/workspace.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "keyToString": {
+ "Project.color": "0e0226",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "last_opened_file_path": "S:/Projects/ITMO/Programming/Labs/First - Basics of Java development/Lab0",
+ "project.structure.last.edited": "Artifacts",
+ "project.structure.proportion": "0.15",
+ "project.structure.side.proportion": "0.2",
+ "settings.editor.selected.configurable": "preferences.pluginManager"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1663501415161
+
+
+ 1663501415161
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1663502288771
+
+
+
+ 1663502288771
+
+
+ 1663502888600
+
+
+
+ 1663502888600
+
+
+ 1663503188846
+
+
+
+ 1663503188846
+
+
+ 1663510416362
+
+
+
+ 1663510416362
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/META-INF/MANIFEST.MF b/Programming/Labs/First - Basics of Java development/Lab0/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ded71df
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Main-Class: progalab0.Hello
+
diff --git a/Programming/Labs/First - Basics of Java development/Lab0/src/progalab0/Hello.java b/Programming/Labs/First - Basics of Java development/Lab0/src/progalab0/Hello.java
new file mode 100644
index 0000000..bc53c62
--- /dev/null
+++ b/Programming/Labs/First - Basics of Java development/Lab0/src/progalab0/Hello.java
@@ -0,0 +1,85 @@
+package progalab0;
+
+import java.text.DecimalFormat;
+import java.util.Random;
+
+public class Hello {
+
+ public static void main(String[] args) {
+ short[] a = createFirstArray(); // создаем первый массив
+ System.out.print(a[0] + "\n");
+
+ float[] x = createSecondArray(); // создаем второй массив
+ System.out.print(x[12] + "\n");
+
+ math(a, x);
+ }
+
+ private static short[] createFirstArray() {
+ short[] firstArray = new short[17]; // создаем массив на 17 элементов
+ int count = 0;
+ for (short i = 5; i < 22; i++) { // заполняем массив числами от 5 до 21 включительно
+ firstArray[count] = i;
+ count++;
+ }
+ return firstArray; // возвращаем первый массив
+ }
+
+ private static float[] createSecondArray() {
+ float[] secondArray = new float[13];
+ Random random = new Random(); // создаем объект Random для заполнения массива числами, следуя ТЗ
+ for (int i = 0; i < 13; i++) {
+ /*
+ Случайное число от 0 до 1
+ увеличиваем диапазон в 15 раз
+ смещаем на 11 единиц.
+ */
+ secondArray[i] = random.nextFloat() * 15 - 11;
+ }
+ return secondArray; // возвращаем второй массив
+ }
+
+ /*
+ Массивы в тз названы одинаково, поэтому
+ Итоговый массив именован как а
+ Второй массив именован как thin a
+ Так как в задании результирующий массив был выделен жирным, а предыдущий просто как "а"
+ * */
+ private static void math(short[] thina, float[] d) {
+ double[][] a = new double[9][13]; // создаем массив на 9 строк и 13 столбцов (двухмерный)
+ for (int i = 0; i < 9; i++) { // X
+ for (int j = 0; j < 13; j++) { // Y
+ float x = d[j];
+ if (thina[i] == 9) {
+ a[i][j] = Math.log(Math.sqrt(Math.pow((Math.sin(x)), 2)));
+ } else {
+ switch ((int) thina[i]) { // если а[i] принадлежит (5, 15, 7, 19), то
+ case 5:
+ case 15:
+ case 7:
+ case 19:
+ a[i][j] = Math.pow((Math.tan(Math.pow(Math.sqrt(x), 3))),
+ (4 - Math.sin(Math.pow(Math.E, x))) / 2);
+ break;
+ default:
+ a[i][j] = 4 * (Math.asin(Math.cos(Math.tan(x / (x + 0.25f)))) + 2.0 / 3.0);
+ }
+ }
+ }
+ }
+ for (int i = 0; i < 9; i++) {
+ for (int j = 0; j < 13; j++) {
+ if (((Double) (a[i][j])).isNaN()) { // проверка на Not a Number
+ System.out.print("NaN "); // если значение "не число", то выводим "NaN", чтобы было красиво :)
+ } else {
+ /*
+ Вывод чисел с плавающей точкой в формате 0.000 (3 знака после запятой)
+ Также для удобства чтения добавлены пробелы между столбцами
+ * */
+ System.out.print(new DecimalFormat("#.###").format(a[i][j]) + " ");
+ }
+ }
+ System.out.print("\n"); // переход на новую строку (y++ по сути)
+ }
+ }
+}
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/.gitignore b/Programming/Labs/Second - OOP/Pokemon/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/artifacts/Pokemon_jar.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/artifacts/Pokemon_jar.xml
new file mode 100644
index 0000000..edff415
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/artifacts/Pokemon_jar.xml
@@ -0,0 +1,17 @@
+
+
+ $PROJECT_DIR$/out/artifacts/Pokemon_jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/dbnavigator.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/dbnavigator.xml
new file mode 100644
index 0000000..a397ff1
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/dbnavigator.xml
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/kotlinc.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/kotlinc.xml
new file mode 100644
index 0000000..c729201
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/kotlinc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/ktlint.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/ktlint.xml
new file mode 100644
index 0000000..6c881ef
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/ktlint.xml
@@ -0,0 +1,6 @@
+
+
+
+ false
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/KotlinJavaRuntime.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/KotlinJavaRuntime.xml
new file mode 100644
index 0000000..d0ec564
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/KotlinJavaRuntime.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/Pokemon.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/Pokemon.xml
new file mode 100644
index 0000000..2a33617
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/libraries/Pokemon.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/misc.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/misc.xml
new file mode 100644
index 0000000..0548357
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/modules.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/modules.xml
new file mode 100644
index 0000000..f048aa7
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/.idea/vcs.xml b/Programming/Labs/Second - OOP/Pokemon/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/MANIFEST.MF b/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..36a925a
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Main-Class: pokemon.GameKt
+Class-Path: Pokemon.jar kotlin-stdlib.jar kotlin-reflect.jar kotlin-test
+ .jar
+
diff --git a/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/Pokemon.kotlin_module b/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/Pokemon.kotlin_module
new file mode 100644
index 0000000..d394aad
Binary files /dev/null and b/Programming/Labs/Second - OOP/Pokemon/out/production/Pokemon/META-INF/Pokemon.kotlin_module differ
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/Task.md b/Programming/Labs/Second - OOP/Pokemon/src/main/Task.md
new file mode 100644
index 0000000..2b6736f
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/Task.md
@@ -0,0 +1,51 @@
+# Задание
+На основе базового класса pokemon написать свои классы для заданных видов покемонов. Каждый вид покемона должен иметь один или два типа и стандартные базовые характеристики:
+
+-очки здоровья (HP)\
+-атака (attack)\
+-защита (defense)\
+-специальная атака (special attack)\
+-специальная защита (special defense)\
+-скорость (speed)
+
+**Моё несогласие (DRY)** \
+Вышеизложенное считаю не целесообразным и неправильным с точки зрения принципов SOLID в части "_На основе базового класса pokemon написать свои классы для заданных видов покемонов_" т. к.:-
+- разные классы воспроизводят одинаковую логику, но с разными параметрами. Это нарушение принципа DRY (Don't Repeat Yourself)
+
+## Классы
+Классы покемонов должны наследоваться в соответствии с цепочкой эволюции покемонов. На основе базовых классов PhysicalMove, SpecialMove и StatusMove реализовать свои классы для заданных видов атак.
+
+Атака должна иметь стандартные тип, силу (power) и точность (accuracy). Должны быть реализованы стандартные эффекты атаки. Назначить каждому виду покемонов атаки в соответствии с вариантом.
+Уровень покемона выбирается минимально необходимым для всех реализованных атак.
+
+Используя класс симуляции боя Battle, создать 2 команды покемонов (каждый покемон должен иметь имя) и запустить бой.
+
+Базовые классы и симулятор сражения находятся в jar-архиве (обновлен 9.10.2018, исправлен баг с добавлением атак и кодировкой). Документация в формате javadoc - здесь.
+
+Информацию о покемонах, цепочках эволюции и атаках можно найти на сайтах http://poke-universe.ru, http://pokemondb.net, http://veekun.com/dex/pokemon
+
+# Комментарии
+**Цель работы:** на простом примере разобраться с основными концепциями ООП и научиться использовать их в программах.
+
+### Что надо сделать (краткое описание)
+
+Ознакомиться с документацией, обращая особое внимание на классы pokemon и Move. При дальнейшем выполнении лабораторной работы читать документацию еще несколько раз.
+Скачать файл pokemon.jar. Его необходимо будет использовать как для компиляции, так и для запуска программы. Распаковывать его не надо! Нужно научиться подключать внешние jar-файлы к своей программе.
+Написать минимально работающую программу и посмотреть как она работает.
+
+
+> Battle b = new Battle();\
+> pokemon p1 = new pokemon("Чужой", 1);\
+> pokemon p2 = new pokemon("Хищник", 1);\
+> b.addAlly(p1);\
+> b.addFoe(p2);\
+> b.go();
+
+Создать один из классов покемонов для своего варианта. Класс должен наследоваться от базового класса pokemon. В конструкторе нужно будет задать типы покемона и его базовые характеристики.\
+После этого попробуйте добавить покемона в сражение.\
+Создать один из классов атак для своего варианта (лучше всего начать с физической или специальной атаки). Класс должен наследоваться от класса PhysicalMove или SpecialMove.\
+В конструкторе нужно будет задать тип атаки, ее силу и точность. После этого добавить атаку покемону и проверить ее действие в сражении.\
+Не забудьте переопределить метод describe, чтобы выводилось нужное сообщение.\
+Если действие атаки отличается от стандартного, например, покемон не промахивается, либо атакующий покемон также получает повреждение, то в классе атаки нужно дополнительно переопределить соответствующие методы (см. документацию).\
+При реализации атак, которые меняют статус покемона (наследники StatusMove), скорее всего придется разобраться с классом Effect. Он позволяет на один или несколько ходов изменить состояние покемона или модификатор его базовых характеристик.\
+Доделать все необходимые атаки и всех покемонов, распределить покемонов по командам, запустить сражение.
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Extensions.kt b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Extensions.kt
new file mode 100644
index 0000000..3004206
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Extensions.kt
@@ -0,0 +1,18 @@
+package pokemon
+
+import ru.ifmo.se.pokemon.Battle
+import ru.ifmo.se.pokemon.Pokemon
+
+fun Battle.addAllies(vararg allies: Pokemon) {
+ allies.forEach { addAlly(it) }
+}
+fun Battle.addFoes(vararg allies: Pokemon) {
+ allies.forEach { addFoe(it) }
+}
+
+fun chance(percent: Int): Boolean {
+ return Math.random() < (percent / 100)
+}
+fun chance(percent: Int, action: () -> Unit): Boolean {
+ return Math.random() < (percent / 100)
+}
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Game.kt b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Game.kt
new file mode 100644
index 0000000..1eaf2c5
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/Game.kt
@@ -0,0 +1,77 @@
+package pokemon
+
+import ru.ifmo.se.pokemon.*
+
+
+fun main() {
+ val battle = Battle()
+
+ val facade = CustomAttack(
+ Type.DARK, 70, 100, "Facade",
+ listOf(Effect().condition(Status.BURN).stat(Stat.ATTACK, (70 * 2)),
+ Effect().condition(Status.POISON).stat(Stat.ATTACK, (70 * 2)),
+ Effect().condition(Status.PARALYZE).stat(Stat.ATTACK, (70 * 2)))
+ )
+ val zenHeadbutt = CustomAttack(Type.PSYCHIC, 80, 90, "Zen Headbutt")
+ val calmMind = CustomAttack(Type.PSYCHIC, 0, 0, "Calm Mind",
+ selfActions = { it.setMod(Stat.SPECIAL_ATTACK, 1); it.setMod(Stat.SPECIAL_DEFENSE, 1) }
+ )
+ val doubleTeam = CustomAttack(Type.NORMAL, 0, 100, "Double Team",
+ selfActions = { it.setMod(Stat.EVASION, 1) }
+ )
+ val tackle = CustomAttack(Type.NORMAL, 40, 100, "Tackle")
+ val sandAttack = CustomAttack(Type.GROUND, 0, 100, "Sand Attack",
+ opponentActions = { it.setMod(Stat.ACCURACY, -1) }
+ )
+ val psychic = CustomAttack(Type.PSYCHIC, 90, 100, "Psychic",
+ opponentActions = { it.setMod(Stat.SPECIAL_DEFENSE, -1) }
+ )
+ val chargeBeam = CustomAttack(Type.ELECTRIC, 50, 90, "Charge Beam",
+ opponentActions = { chance(70) { it.setMod(Stat.SPECIAL_ATTACK, 1) } }
+ )
+ val wildCharge = CustomAttack(Type.ELECTRIC, 90, 100, "Wild Charge",
+ opponentActions = { chance(30) { it.setMod(Stat.SPEED, -1) } }
+ )
+ val crunch = CustomAttack(Type.DARK, 80, 100, "Crunch",
+ opponentActions = { chance(20) { it.setMod(Stat.DEFENSE, -1) } }
+ )
+ val stringShot = CustomAttack(Type.BUG, 0, 95, "String Shot",
+ opponentActions = { it.setMod(Stat.SPEED, -2) }
+ )
+
+ val sableye = Spok("Sableye", 1).apply {
+ setStatsFromArgs(50.0, 75.0, 75.0, 65.0, 65.0, 50.0)
+ addTypes(Type.DARK, Type.GHOST)
+ addMoves(facade, zenHeadbutt, calmMind, doubleTeam)
+ }
+ val eeve = Spok("Eevee", 1).apply {
+ setStatsFromArgs(55.0, 55.0, 50.0, 45.0, 65.0, 55.0)
+ addTypes(Type.NORMAL)
+ addMoves(tackle, facade, sandAttack)
+ }
+ val umbreon = Spok("Umbreon", 1).apply {
+ setStatsFromArgs(95.0, 65.0, 110.0, 60.0, 130.0, 65.0)
+ addTypes(Type.DARK)
+ addMoves(tackle, facade, sandAttack, psychic)
+ }
+ val grubbin = Spok("Grubbin", 1).apply {
+ setStatsFromArgs(47.0, 62.0, 45.0, 55.0, 45.0, 46.0)
+ addTypes(Type.BUG)
+ addMoves(chargeBeam, wildCharge)
+ }
+ val charjabug = Spok("Charjabug", 1).apply {
+ setStatsFromArgs(57.0, 82.0, 95.0, 55.0, 75.0, 36.0)
+ addTypes(Type.BUG, Type.ELECTRIC)
+ addMoves(chargeBeam, wildCharge, crunch)
+ }
+ val vikavolt = Spok("Vikavolt", 1).apply {
+ setStatsFromArgs(77.0, 70.0, 90.0, 145.0, 75.0, 43.0)
+ addTypes(Type.BUG, Type.ELECTRIC)
+ addMoves(chargeBeam, wildCharge, crunch, stringShot)
+ }
+
+ battle.addAllies(sableye, eeve, umbreon)
+ battle.addFoes(grubbin, charjabug, vikavolt)
+
+ battle.go()
+}
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/CustomAttack.kt b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/CustomAttack.kt
new file mode 100644
index 0000000..85e59ea
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/CustomAttack.kt
@@ -0,0 +1,37 @@
+package pokemon
+
+import ru.ifmo.se.pokemon.Effect
+import ru.ifmo.se.pokemon.PhysicalMove
+import ru.ifmo.se.pokemon.Pokemon
+import ru.ifmo.se.pokemon.Type
+
+open class CustomAttack(
+ type: Type,
+ power: Number,
+ accuracy: Number,
+ desc: String = "",
+ private val selfEffects: List = emptyList(),
+ private val opponentEffects: List = emptyList(),
+ private val selfActions: (Pokemon) -> Unit = {},
+ private val opponentActions: (Pokemon) -> Unit = {},
+) :
+ PhysicalMove(type, power.toDouble(), (accuracy.toDouble() / 100)) {
+
+ override fun applySelfEffects(p0: Pokemon?) {
+ super.applySelfEffects(p0)
+ selfEffects.forEach { p0?.addEffect(it) }
+ selfActions(p0!!)
+ }
+
+ override fun applyOppEffects(p0: Pokemon?) {
+ super.applySelfEffects(p0)
+ opponentEffects.forEach { p0?.addEffect(it) }
+ opponentActions(p0!!)
+ }
+
+ private var description: String = "использовал $desc"
+ override fun describe() = description
+ fun setDescription(desc: String) {
+ description = desc
+ }
+}
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/Spok.kt b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/Spok.kt
new file mode 100644
index 0000000..317e5d6
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/kotlin/pokemon/Spok.kt
@@ -0,0 +1,56 @@
+package pokemon
+
+import ru.ifmo.se.pokemon.Move
+import ru.ifmo.se.pokemon.Pokemon
+import ru.ifmo.se.pokemon.Stat
+import ru.ifmo.se.pokemon.Type
+
+class Spok (
+ name: String,
+ level: Int = 1,
+ types: List = emptyList(),
+ stats: Map = mapOf(),
+ moves: List = listOf(Move.getStruggleMove())
+) : Pokemon(name, level) {
+
+ init {
+ super.setLevel(level)
+ super.setType(*types.toTypedArray())
+ if (stats.isNotEmpty()) { setStatsFromMap(stats) }
+ moves.forEach { addMove(it) }
+ }
+
+ fun setStatsFromArgs(
+ hp: Double,
+ attack: Double,
+ defense: Double,
+ specialAttack: Double,
+ specialDefense: Double,
+ speed: Double
+ ) {
+ super.setStats(hp, attack, defense, specialAttack, specialDefense, speed)
+ }
+
+ private fun setStatsFromMap(stats: Map) {
+ try {
+ super.setStats(
+ stats[Stat.HP]!!,
+ stats[Stat.ATTACK]!!,
+ stats[Stat.DEFENSE]!!,
+ stats[Stat.SPECIAL_ATTACK]!!,
+ stats[Stat.SPECIAL_DEFENSE]!!,
+ stats[Stat.SPEED]!!,
+ )
+ } catch (npe: NullPointerException) {
+ throw Exception("Stats Set Failed")
+ }
+ }
+
+ fun addTypes(vararg types: Type) {
+ super.setType(*types)
+ }
+
+ fun addMoves(vararg moves: Move) {
+ moves.forEach { addMove(it) }
+ }
+}
\ No newline at end of file
diff --git a/Programming/Labs/Second - OOP/Pokemon/src/main/resources/META-INF/MANIFEST.MF b/Programming/Labs/Second - OOP/Pokemon/src/main/resources/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..36a925a
--- /dev/null
+++ b/Programming/Labs/Second - OOP/Pokemon/src/main/resources/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Main-Class: pokemon.GameKt
+Class-Path: Pokemon.jar kotlin-stdlib.jar kotlin-reflect.jar kotlin-test
+ .jar
+
diff --git a/Programming/Labs/Second - OOP/Отчёт о лабораторной работе №2 по программированию.pdf b/Programming/Labs/Second - OOP/Отчёт о лабораторной работе №2 по программированию.pdf
new file mode 100644
index 0000000..bf479e5
Binary files /dev/null and b/Programming/Labs/Second - OOP/Отчёт о лабораторной работе №2 по программированию.pdf differ