1
0
Fork 0
mirror of https://gitlab.rlp.net/mobitar/julia_course.git synced 2024-11-16 13:28:10 +00:00

Done tasks day 2

This commit is contained in:
Mo8it 2022-03-28 02:17:46 +02:00
parent aa2899212d
commit f50a50af91

426
Day_1/Tasks_day_1.jl Normal file
View file

@ -0,0 +1,426 @@
### A Pluto.jl notebook ###
# v0.18.4
using Markdown
using InteractiveUtils
# This Pluto notebook uses @bind for interactivity. When running this notebook outside of Pluto, the following 'mock version' of @bind gives bound variables a default value (instead of an error).
macro bind(def, element)
quote
local iv = try Base.loaded_modules[Base.PkgId(Base.UUID("6e696c72-6542-2067-7265-42206c756150"), "AbstractPlutoDingetjes")].Bonds.initial_value catch; b -> missing; end
local el = $(esc(element))
global $(esc(def)) = Core.applicable(Base.get, el) ? Base.get(el) : iv(el)
el
end
end
# ╔═╡ a9cadc7e-10ce-4242-82af-2849b5f258f8
# Oh, no, you found my secret! 😱
# Don't change this hidden cell!
begin
using PlutoUI
function check_reverse_string()
if @isdefined reverse_string
test_str = "BlablaHahaOKLOL"
try
if reverse_string(test_str) != reverse(test_str)
return md"""
🔴 Your function delivers wrong results 😢
"""
end
catch err
return md"""
🔴 Something is wrong with your function 😵
"""
end
return md"""
🟢 Nice, all is fine 👌
"""
else
return md"""
🔴 The function `reverse_string` is not implemented yet 🤨
"""
end
end
function check_squaring_difference()
if @isdefined squaring_difference
random_numbers = (331, 236, 69, 738, 949, 631, 761, 119, 729, 280)
results_to_random_numbers = (3006919850, 777687850, 5720330, 74226126612, 202912760050, 39674819100, 83918590100, 50410780, 70671821220, 1540279020)
for i in 1:length(random_numbers)
try
if squaring_difference(random_numbers[i]) != results_to_random_numbers[i]
return md"""
🔴 Your function delivers wrong results 😢
"""
end
catch err
return md"""
🔴 Something is wrong with your function 😵
"""
end
end
return md"""
🟢 Nice, all is fine 👌
"""
else
return md"""
🔴 The function `squaring_difference` is not implemented yet 🤨
"""
end
end
md""
end
# ╔═╡ 094a714e-7a97-411b-8317-4d4acefaedbd
md"""
# BMI
The BMI is calculated with this formula:
$\text{BMI} = \frac{m}{l^2}$
with $m$ as the mass in kg and $l$ as the height in m.
Write code that shows "Underweight" for $\text{BMI} < 18.5$, "Normal weight" for $18.5 \le \text{BMI} < 25$ and "Overweight" for $25.0 \le \text{BMI}$.
Test your code with the two sliders below.
The variables `m` and `l` are already defined and their values are updated with the sliders.
"""
# ╔═╡ 1a43924b-da29-4154-bee4-c1fa65df6e40
@bind m Slider(2:200)
# ╔═╡ c22161f9-4def-4170-974f-86f2748037dc
md"""
`m` = $m (kg)
"""
# ╔═╡ f9e3b4af-bf21-4207-9061-3a91ae40c374
@bind l Slider(0.30:0.01:2.50)
# ╔═╡ 5781fdc3-54ed-4499-bf3d-c3438c85d1ef
md"""
`l` = $l (m)
"""
# ╔═╡ d286051e-c17e-41df-b8e3-e186b36d60cf
# Your code starts here
# ╔═╡ 9d69637b-2733-46f8-8423-41331aa45c28
md"""
# Number of grains
You know for sure about the story with grains for every chess square.
A chess board has 64 squares. For the first square, there is only one grain. For the second one, there are two grains. The number of grains doubles for every square.
Calculate the number of grains for every square and their sum.
"""
# ╔═╡ 33ed17ca-2971-4de1-8bf7-03aa380fea57
# Your code starts here
# ╔═╡ f71b0085-8185-4d3f-b29e-90af6ac8957a
md"""
# Reverse string
Write a function named `reverse_string` that takes an argument as a string and returns the reversed string.
No cheating by using builtin reversing functions!
Example: "string" would get "gnirts".
"""
# ╔═╡ 2de65e70-661c-40c1-8fdb-03fd5b25b7e2
# Write your function here
# ╔═╡ d5bff992-e8b2-4f72-8943-db8ac4a671eb
check_reverse_string()
# ╔═╡ be22832f-2004-49ec-911c-96e7e790ba5a
md"""
# Squaring difference
Write a function named `squaring_difference` that takes one argument `N` as a natural number and returns the following:
$\left(\sum_{i=1}^N i\right)^2 - \sum_{i=1}^N i^2$
"""
# ╔═╡ 53b585dd-aa13-44c1-a3de-988e027ab0c4
# Write your function here
# ╔═╡ b08055c9-b6de-4495-9788-ff79928a85ef
check_squaring_difference()
# ╔═╡ b6fe803e-1300-4d00-97fa-de6646743f94
md"""
# XO game
**Only for those who have time left and want to try a hard task!**
Now that you know about matrices in Julia, use a matrix to present a XO board.
To place a X or O, take the user input for the column and row using the function `readline`.
Make sure you update the board after the user input.
You want more?
- Implement player names.
- Implement a check if a user did win.
- Check your code for possible performance issues. Try to minimize allocations.
- Implement a playing AI. No, kidding! Just tell me to give you more tasks if get here 😂
*BTW: You can use Julia for AI, so the programming language is not the limitation here* 😅
"""
# ╔═╡ 2c68b8a0-694b-4be0-9880-657d9ac1ef09
# Your code starts here
# ╔═╡ 00000000-0000-0000-0000-000000000001
PLUTO_PROJECT_TOML_CONTENTS = """
[deps]
PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
[compat]
PlutoUI = "~0.7.37"
"""
# ╔═╡ 00000000-0000-0000-0000-000000000002
PLUTO_MANIFEST_TOML_CONTENTS = """
# This file is machine-generated - editing it directly is not advised
julia_version = "1.7.2"
manifest_format = "2.0"
[[deps.AbstractPlutoDingetjes]]
deps = ["Pkg"]
git-tree-sha1 = "8eaf9f1b4921132a4cff3f36a1d9ba923b14a481"
uuid = "6e696c72-6542-2067-7265-42206c756150"
version = "1.1.4"
[[deps.ArgTools]]
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
[[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
[[deps.Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
[[deps.ColorTypes]]
deps = ["FixedPointNumbers", "Random"]
git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597"
uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
version = "0.11.0"
[[deps.CompilerSupportLibraries_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
[[deps.Dates]]
deps = ["Printf"]
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
[[deps.Downloads]]
deps = ["ArgTools", "LibCURL", "NetworkOptions"]
uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6"
[[deps.FixedPointNumbers]]
deps = ["Statistics"]
git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc"
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
version = "0.8.4"
[[deps.Hyperscript]]
deps = ["Test"]
git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9"
uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91"
version = "0.0.4"
[[deps.HypertextLiteral]]
git-tree-sha1 = "2b078b5a615c6c0396c77810d92ee8c6f470d238"
uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
version = "0.9.3"
[[deps.IOCapture]]
deps = ["Logging", "Random"]
git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a"
uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89"
version = "0.2.2"
[[deps.InteractiveUtils]]
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[deps.JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e"
uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6"
version = "0.21.3"
[[deps.LibCURL]]
deps = ["LibCURL_jll", "MozillaCACerts_jll"]
uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21"
[[deps.LibCURL_jll]]
deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"]
uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0"
[[deps.LibGit2]]
deps = ["Base64", "NetworkOptions", "Printf", "SHA"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
[[deps.LibSSH2_jll]]
deps = ["Artifacts", "Libdl", "MbedTLS_jll"]
uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8"
[[deps.Libdl]]
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
[[deps.LinearAlgebra]]
deps = ["Libdl", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
[[deps.Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[deps.Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
[[deps.MbedTLS_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
[[deps.Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
[[deps.MozillaCACerts_jll]]
uuid = "14a3606d-f60d-562e-9121-12d972cd8159"
[[deps.NetworkOptions]]
uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908"
[[deps.OpenBLAS_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"]
uuid = "4536629a-c528-5b80-bd46-f80d51c5b363"
[[deps.Parsers]]
deps = ["Dates"]
git-tree-sha1 = "85b5da0fa43588c75bb1ff986493443f821c70b7"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "2.2.3"
[[deps.Pkg]]
deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"]
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
[[deps.PlutoUI]]
deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "Random", "Reexport", "UUIDs"]
git-tree-sha1 = "bf0a1121af131d9974241ba53f601211e9303a9e"
uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8"
version = "0.7.37"
[[deps.Printf]]
deps = ["Unicode"]
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
[[deps.REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
[[deps.Random]]
deps = ["SHA", "Serialization"]
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
[[deps.Reexport]]
git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2"
[[deps.SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
[[deps.Serialization]]
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
[[deps.Sockets]]
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
[[deps.SparseArrays]]
deps = ["LinearAlgebra", "Random"]
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
[[deps.Statistics]]
deps = ["LinearAlgebra", "SparseArrays"]
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
[[deps.TOML]]
deps = ["Dates"]
uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
[[deps.Tar]]
deps = ["ArgTools", "SHA"]
uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e"
[[deps.Test]]
deps = ["InteractiveUtils", "Logging", "Random", "Serialization"]
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
[[deps.UUIDs]]
deps = ["Random", "SHA"]
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
[[deps.Unicode]]
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
[[deps.Zlib_jll]]
deps = ["Libdl"]
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
[[deps.libblastrampoline_jll]]
deps = ["Artifacts", "Libdl", "OpenBLAS_jll"]
uuid = "8e850b90-86db-534c-a0d3-1478176c7d93"
[[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"
[[deps.p7zip_jll]]
deps = ["Artifacts", "Libdl"]
uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0"
"""
# ╔═╡ Cell order:
# ╟─094a714e-7a97-411b-8317-4d4acefaedbd
# ╟─1a43924b-da29-4154-bee4-c1fa65df6e40
# ╟─c22161f9-4def-4170-974f-86f2748037dc
# ╟─f9e3b4af-bf21-4207-9061-3a91ae40c374
# ╟─5781fdc3-54ed-4499-bf3d-c3438c85d1ef
# ╠═d286051e-c17e-41df-b8e3-e186b36d60cf
# ╟─9d69637b-2733-46f8-8423-41331aa45c28
# ╠═33ed17ca-2971-4de1-8bf7-03aa380fea57
# ╟─f71b0085-8185-4d3f-b29e-90af6ac8957a
# ╠═2de65e70-661c-40c1-8fdb-03fd5b25b7e2
# ╟─d5bff992-e8b2-4f72-8943-db8ac4a671eb
# ╟─be22832f-2004-49ec-911c-96e7e790ba5a
# ╠═53b585dd-aa13-44c1-a3de-988e027ab0c4
# ╟─b08055c9-b6de-4495-9788-ff79928a85ef
# ╟─b6fe803e-1300-4d00-97fa-de6646743f94
# ╠═2c68b8a0-694b-4be0-9880-657d9ac1ef09
# ╟─a9cadc7e-10ce-4242-82af-2849b5f258f8
# ╟─00000000-0000-0000-0000-000000000001
# ╟─00000000-0000-0000-0000-000000000002