共通テスト 目標点メモ
数学 180
英語 180
理科 180
国語 150
地理 50
で740です 頑張るぞ!
課題としては地理国語が安定してこの点数取れるか不安なのと、理科科目で雑魚間違いが目立つことです 予想問題解いてどうにかします(なおあと2週間ちょい)
これまでの過去問でやらかしたことまとめ
ちょっと経験もたまってきたのでこれまでの過去問でやらかしたこと&これは覚えておけ&その他諸々リストを作ろうと思い立ちました。
数学
戦略
東工大は5問構成180分なので一問30分弱で解いていく感じでやる。30分で解き終わらなかったら次の問へ(試験なわけですから知的好奇心を満たす場ではない、問題の答えを求めるより点数を取るのが大事。という心もち。)最後に少なくとも30分は余るので、出来なかった所の中で一番完答に近い問題を解く。目標は220点。
ガウス記号の扱い
こんな感じ。コレすぐ出てこなくて10分ぐらい無駄にした。
物理
戦略
東工大物理は割と時間が緩いので丁寧にやっていく。それでも大問一つ40分なのでそれをオーバーしそうであれば次の問題へ。
早稲田に関しては問題量が多すぎるのでそもそも解き切るのは無理、と割り切って進めるしかない。めんどそうな計算は後回し。(早稲田は化学も多いのでなかなかキツイ)
熱力学
定期的に解法を忘れる。
化学
戦略
理系科目の中で最も苦手な科目。頑張ろう……大問一つ40分を目安に解く。
理論
電解質の浸透圧の計算の時、注意。
有機
環構造かなり盲点。ちゃんと考える。
haskellでn進法型作った
こちらの記事が非常に参考になりました。ありがとうございます。
GHCの型レベル自然数を理解する - Qiita
こんな感じ。
{-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} module Nary where import GHC.Natural (Natural) import GHC.TypeNats (KnownNat, Nat, natVal) import Prelude hiding (head) --N進法 (型としての自然数rをRadix(基数)とする) newtype Nary (r :: Nat) = Nary Natural instance KnownNat r => Show (Nary r) where show (Nary 0) = "" show n = show (1 |>| n) ++ show (head n) (|+|) :: Nary r -> Nary r -> Nary r (|+|) (Nary m) (Nary n) = Nary $ m + n (|-|) :: Nary r -> Nary r -> Maybe (Nary r) (|-|) (Nary m) (Nary n) | m - n < 0 = Nothing | otherwise = Just $ Nary $ m - n (|*|) :: Nary r -> Nary r -> Nary r (|*|) (Nary m) (Nary n) = Nary $ m * n (|>|) :: KnownNat r => Natural -> Nary r -> Nary r --右シフト あふれた分は放棄 (|>|) n t@(Nary m) = Nary $ div m $ r ^ n where r = natVal t (|<|) :: KnownNat r => Natural -> Nary r -> Nary r --左シフト 増えた分は0で埋める (|<|) n t@(Nary m) = Nary $ m * r ^ n where r = natVal t take :: KnownNat r => Int -> Nary r -> Nary r --1~n桁目までの取り出し take n t@(Nary m) = Nary $ mod m $ r ^ n where r = natVal t head :: KnownNat r => Nary r -> Natural --先頭要素の取り出し head t@(Nary m) = mod m r where r = natVal t (|!|) :: KnownNat r => Natural -> Nary r -> Natural --n桁目の取り出し (|!|) = (head .) . (|>|) toNat :: Nary r -> Natural toNat (Nary n) = n
2進法の型は Nary 2、 3進法の型は Nary 3 となっている。
なので
{-# LANGUAGE DataKinds #-} module Main where import Nary main :: IO () main = do let x = Nary 4 :: Nary 2 y = Nary 7 :: Nary 2 z = x |+| y print z return ()
こういうことができる。
x = Nary 7 :: Nary 2 y = Nary 4 :: Nary 3 z = x |+| y
こういうことをするとコンパイラに怒られる。便利。
これを使ってn桁目をn個目の要素として保持するリストを作ろうとしたのですが、怒られが発生しました。
{-# LANGUAGE DataKinds #-} {-# LANGUAGE NoStarIsType #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -fplugin GHC.TypeLits.Normalise #-} {-# OPTIONS_GHC -fplugin GHC.TypeLits.KnownNat.Solver #-} module NaryList where import GHC.Natural import GHC.TypeNats import Nary newtype NaryList (l :: Nat) (r :: Nat) = NaryList (Nary r) --Nary(n進法の1の位からr ^ (l - 1)の位までをリストとする) head :: (KnownNat r, 1 <= l) => NaryList l r -> Natural --先頭要素 head (NaryList n) = Nary.head n tail :: (KnownNat r, 1 <= l) => NaryList l r -> NaryList (l - 1) r --先頭を除いたもの tail (NaryList n) = NaryList $ 1 Nary.|>| n toList :: (KnownNat l, 0 <= l, KnownNat r) => NaryList l r -> [Natural] toList t@ns | natVal t == 0 = [] | otherwise = NaryList.head ns : toList (NaryList.tail ns)--Error! --Couldn't match type ‘1 <=? l’ with ‘'True’
tailの(l - 1)を(l + 1)にすると怒られないです。こちらからしたら明確に1以上ではあるんだけどコンパイラにそれをわからせるのはなかなか難しいみたいです……
どうしたものか
余談
それにしてもこのブログのコードブロック(?)、めちゃくちゃ読みにくいですよね……
読みやすくなるやつ導入(コピペ)したんですけど特に変化がない。JavaScript君がうまく動いてくれてないみたいです……
数学メモ 2020/11/29
Steve Awodey / Category Theory のChapter 1の途中まで読んで色々と学びがあったのでメモ。~morphism (射)という単語が多すぎてなかなか大変でした。
Steve Awodey の Category Theory を読む : Chapter 1 - 俺の Colimit を越えてゆけ
こちらのブログを読みつつ自分で色々と調べました。
集合 setにおいて
が
単射 injectiveであるとは
全射 surjectiveであるとは
全単射 bijectionであるとは
群 groupにおいて
が
準同型写像 homomorphismであるとは
特にfが
injectiveの時、単準同型 monomorphism
surjectiveの時、全準同型 epimorphism
というそうです。
同型写像 isomorphismであるとは
自己準同型写像 endomorphismであるとは
自己同型写像 automorphismであるとは
同じことですが
式だけじゃわかりにくいので例を作ってみました。
群 (+'は2を法とした剰余演算)
でをで定義すると
fは準同型写像ですが同型写像でも自己準同型写像自己同型写像でもありません。
(あいまいな言い方ですが)このHの台集合をにするとfは自己準同型写像でありますが自己同型写像でなくなります。
圏 categoryにおいて
が同型写像 isomorphismであるとは
です。
・まとめ
まだ何もわからん