Written on 6/25:. After doing atcoder for about 5 weeks, I was able to verbalize what kind of learning I am doing, so notes Letâs read it back and tweet it when it turns green. âTweeted with tidy additions as it turned green on 7/5.
- Enter the contest first
- Because learning after testing is better for memory retention. see Testing is a means of memory.
- Write with the intention of explaining to others how you solved it.
- Because it strengthens my memory and gives me the opportunity to organize and understand better. see teach others.
- While I was writing the explanation, I thought, âHey, I thought it was A, but thatâs not necessarily true, is it?â or âI messed around and finally decided to write AC this way, but looking back, I wonder if this part of the code is not necessary. In retrospect, this part of the code may not be necessary.
- View the official explanation PDF
- There could have been a better approach to the problems I was able to solve.
- I can look at it after I solve it once and say, âI see!â I see!
- Compared to reading a textbook, it has a stronger sense of âselfâ and is more easily absorbed into the brain.
- Know the policy for problems you couldnât solve.
- If you can now say, âI see!â then solve the problem again.
- There could have been a better approach to the problems I was able to solve.
- See the code of strong people
- Especially when you say, âHey, the algorithm shouldnât be wrong, but it TLEs.
- Search for âAC code in Python for that problem,â sort by speed, and look from fastest to slowest.
- Now Iâve learned how to use Numba.
- There was one short code search.
- E of ABC171.
- I thought, âThere must be a more concise way to write.â
- But I havenât done it since, because the code hit me with a golf-like readability dump, and itâs hard to read.
- Iâm not aware of the author at first, but as I repeat myself, I notice âsomeone Iâve seen a few timesâ.
- When information is recognized not by itself, but by the âperson who created itâ behind it, the source of information can expand from there
- For example, Pythonâs fast code ranking often has maspy
- I happened to see a blog by maspy, and was glad to find a detailed explanation. Itâs called âFinding quality sources of informationâ.
- This experience creates a learning behavior of âletâs see if maspyâs blog has written about thisâ.
- When the code written by others is not clear at a glance
- Save it locally and use vscodeâs variable renaming function to rename it to an easier-to-understand name as you read it.
- Especially when you say, âHey, the algorithm shouldnât be wrong, but it TLEs.
- Refer to othersâ code for implementation.
- Donât look and copy, donât look and write.
- 1: Read it, understand it, and say âI see, thatâs how you do itâ, then write it yourself without looking at it.
- 2: If you canât write it, look at it right away.
- Iâm spinning fast in a little cycle called
- This is the effect of doing âsmall tests at the level of a few linesâ first, which has the effect of âtesting first reinforces memory.â see Fast test cycles.
- For example, when you are writing, you may think, âHuh? Does this subscript need to be -1? Do I need -1 for this subscript or not? I think itâs necessary in my opinionâ and write it, and then I look at your example and confirm, âOh, sure, itâs -1. Someone elseâs code says, âGood, good, good! Youâre headed in the right direction!â The image of a voice saying to you, âYouâre on the right track! Itâs easy to stay motivated because the rewards are given in a short period of time.
- At this time, prepare the variable names and code for your future reading self.
- Use variable names that are easy for you to understand, not those written by others
- Change the writing style to one that is easy to understand
- For example, if I see something written with ternary operators and I think itâs hard to understand, I write it with if statements to make it easier for myself to understand.
- Iâd supplement the omitted else clause and add, âIn this condition, you donât have to do anything because
- When your future self thinks, âOh, isnât this the same problem I solved before?â and reread it, the code should be easy to read.
- I donât know if there will ever come a time to read it back, but this rewriting process in itself helps me understand it better.
7/6 Iâve noticed something else since writing the above article.
- Verbalization of Awareness
- Different people see the same problem statement and start implementing different programs.
- ABC172C is a problem set up to take one from each of two mountains A and B.
- The most naive form is to implement what is written in the problem statement exactly as it is written, but this often TLEs
- I saw this problem, and I was unconsciously transformed.
- When I saw someone solving it naively, I realized, âOkay, I was deforming unconsciously.
- I was curious what caused this unconscious transformation.
- So I started experimenting with naming the techniques used in the deformation process and making them tags on Scrapbox.
- In the case of this problem, âroute-independentâ
- A then B, B then A is the same.
- Then there is no need to distinguish which came first.
- (As I write this, I noticed that it is related to âUnordered columns are multisets,â and like this, after the fact, âOh, this and this are related,â and a network of knowledge is created in the brain.)
- This is something weâve been trying for a while now, so I canât quite explain what the effect is yet, but it feels beneficial.
7/11
- I was solving DP problems Educational DP Contest without any hesitation, but they were getting harder and harder, and when I saw the sign that said âIf you AC all of them, it is equivalent to yellow,â I felt I made a mistake in selecting the difficulty level.
- I found that I can see the recommended difficulty level in atcoder problems, so I look at that.
- easy is indeed easy, moderate is about âeasy if you notice it, but it feels difficult because you donât notice itâ, solving this seems like a good idea. #atcoder
- How engineers learn
- way of learning
This page is auto-translated from /nishio/ćăźatcoderăźćŠăłæč(ăç·) using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. Iâm very happy to spread my thought to non-Japanese readers.