Skip to content

Instantly share code, notes, and snippets.

View 20chan's full-sized avatar
๐ŸŽธ
rockin'

20chan 20chan

๐ŸŽธ
rockin'
View GitHub Profile
@20chan
20chan / prime.ipynb
Created May 2, 2018 02:24
MAGIC NUMBER 10103
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@20chan
20chan / prime.mbl
Created May 2, 2018 05:56
Prime number algorithm written in marbelous
}0
Pr
Re
:Re
}0
=1
ip np
:ip
@20chan
20chan / Hangul.cs
Created May 9, 2018 02:05
C# ํ•œ๊ธ€ ํด๋ž˜์Šค
public sealed class Hangul
{
private const string Choseongs = "ใ„ฑใ„ฒใ„ดใ„ทใ„ธใ„นใ…ใ…‚ใ…ƒใ……ใ…†ใ…‡ใ…ˆใ…‰ใ…Šใ…‹ใ…Œใ…ใ…Ž";
private const string Jungseongs = "ใ…ใ…ใ…‘ใ…’ใ…“ใ…”ใ…•ใ…–ใ…—ใ…˜ใ…™ใ…šใ…›ใ…œใ…ใ…žใ…Ÿใ… ใ…กใ…ขใ…ฃ";
private const string Jongseongs = " ใ„ฑใ„ฒใ„ณใ„ดใ„ตใ„ถใ„ทใ„นใ„บใ„ปใ„ผใ„ฝใ„พใ„ฟใ…€ใ…ใ…‚ใ…„ใ……ใ…†ใ…‡ใ…ˆใ…Šใ…‹ใ…Œใ…ใ…Ž";
public char Letter { get; }
public char Choseong { get; }
public char Jungseong { get; }
public char Jongseong { get; }
@20chan
20chan / star2.aheui
Created May 10, 2018 04:44
https://www.acmicpc.net/problem/2439 ์•„ํฌ ํ’€์ด
๋ฐฉ๋น ๋ฐ›๋ฐ•ํƒ€ํƒธ์šฐ์ฒ˜๋ฐ๋ฐฆ๋”ฐ๋งฃํฌ
์šฐ์–ด์–ด์–ด์–ด์–ด์–ด
๋น ์‹น๋ฐ›๋ฐ•ํƒ€๋น ์‹บํŒŒ๋ฐ›๋ฐ˜ํƒ€ํƒ€์šฐ
ใ…‡ใ…‡ใ…‡ใ…‡์šฐํ„ฐํ„ฐ๋ฒ…๋ฒ‹๋ฉ“๋– ๋ฒ“๋ฒ•์–ด
์‹ธ์ˆ˜ํŒŒ์•„์•„ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡๋น ์ดˆ๋ป
ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡๋ฌด
๋ฝ€ํˆฌ์˜คใ…‡ใ…‡ใ…‡ใ…‡ใ…‡์•„ใ…‡ใ…‡ใ…‡์•„ใ…‡ใ…‡ใ…‡ใ…‡์šฐ
๋„์ˆš์†Œใ…‡ใ…‡ใ…‡ใ…‡ใ…‡์ดˆ๋ปํ„ฐํ„ฐ๋ฒ…๋ฒ‹๋ฉ“๋– ๋ฒ–๋ฒ
ํ† ๋น ์˜ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡๋งˆ์‚ญ๋น ์‹ธ์‚ฎ๋น ์‹ธ์‚ฌํˆฌ
๋ณธ๋ฒ‹์„ž์จ๋ป์„๋ฉ“๋”๋ฒŠ๋ฒŠใ…‡ใ…‡ใ…‡ใ…‡ใ…‡ใ…‡์ฒ˜ํฌ
@20chan
20chan / 5writeup.md
Last active June 14, 2019 14:55
๊ตญ๊ฐ€์•”ํ˜ธ๊ณต๋ชจ์ „ ๋กธ์—…

ํ”„๋กœ๊ทธ๋žจ์—์„œ A๋ฅผ 25๋ฒˆ ์ž…๋ ฅํ•˜๋ฉด UIYOAUOIOEIAYEUYOIEYEAUYA ์ด ๋‚˜์˜จ๋‹ค. ์ด ๊ฐ’์„ EncVowel ํ…Œ์ด๋ธ”๊ณผ ๋น„๊ตํ•˜์—ฌ ์ฐพ์•„๋ณด๋ฉด, ์ดˆ๊ธฐ vowel_position์˜ ๊ฐ’์€ 8์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ์˜ EncVowel ํ…Œ์ด๋ธ”์˜ ๊ฐ’์€ {6, 3, 5, 2, 1, 4} ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์ฒ˜์Œ A, E, I, O, U, Y ์˜ ๋ชจ์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ๋‚˜์˜ค๋Š” ๊ฐ’์€ ๊ฐ๊ฐ U, E, I, Y, O, A ์ด๋‹ค. ์ฝ”๋“œ์˜ ct_num ์— ํ•ด๋‹น๋˜๋Š” ๋ชจ์Œ์˜ ์ˆซ์ž ๊ฐ’์€ ๊ฐ๊ฐ 4, 1, 2, 5, 3, 0 ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํ…Œ์ด๋ธ”๊ณผ ๋น„๊ตํ•˜์—ฌ ์ด ๊ฐ’์ด ๋‚˜์˜ค๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์Šค (perm_num) ๊ฐ’์€ ๊ฐ๊ฐ 2, 3, 1, 0, 5, 4 ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด PermVowel ์˜ ๊ฐ’์€ {3, 4, 2, 1, 6, 5} ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ž์Œ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๊ธ€์ž๋กœ ์ž์Œ๋“ค B, C, D, ..., Z์˜ ๊ฒฐ๊ณผ๊ฐ’์€ JWHZCXVLGSBQRMPFKNTD ์ด๊ณ  ๋‘๋ฒˆ์งธ ๊ธ€์ž๋กœ ์ž์Œ๋“ค์˜ ๊ฒฐ๊ณผ๊ฐ’์€ MFKXVPZTHDLNGJWBSCQR ์ด๋‹ค. ์ด๋•Œ ์„ธ๊ฐœ์˜ ํ…Œ์ด๋ธ” ์ค‘ ์ฒซ๋ฒˆ์งธ ํ…Œ์ด๋ธ”๋งŒ์ด ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€ํ–ˆ์„ ๊ฒฝ์šฐ์™€ ๋‘๋ฒˆ์งธ ํ…Œ์ด๋ธ”๊ณผ ์ฒซ๋ฒˆ์งธ ํ…Œ์ด๋ธ” ๋‘˜๋‹ค ์ธ๋ฑ์Šค๊ฐ€ ๋ณ€ํ–ˆ์„ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋‹จ ์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ๋งŒ ์ƒ๊ฐํ•ด์ฃผ๊ณ  ์•ˆ๋˜๋ฉด ๋‘๋ฒˆ์งธ ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด ๋ณด๋Š” ๊ฒƒ์œผ๋กœ ํ•œ๋‹ค.

@20chan
20chan / bubble.c
Created October 29, 2018 08:45
๊ณ ๊ตฌ๋งˆ ํ• ๋กœ์œˆ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”์†ŒํŠธ ์ฝ”๋“œ ๋‚œ๋…ํ™”
# include<stdio.h>// /*#
# define/*qqqqqqq*/IS/* /*#
# */6//qqqqqqqqqqqqqqqqqq /*#
# define f(n) for(i/*qqqqq /*#
# */=0;i<n ;i++)//qqqq /*#
# define/* /*#
# */s(a,b) /*#
# */(a^=b, b^=a,a^=b)// /*#
/*q*/int i,c,n,l[IS]; /*#
# */char/* q*/*z=" %d"; /*#
@20chan
20chan / bubble.c
Last active October 30, 2018 09:00
๊ณ ๊ตฌ๋งˆ ํ• ๋กœ์œˆ ์ด๋ฒคํŠธ ๋ฒ„๋ธ” ์†ŒํŠธ
int i,n,t,l[IS];char*z=" %d"+21;b(){for(t=""[0]-7,n=IS;n-->(0[""]-8)&&t&&1+(t=0[""]-8);)for(i=0[""]-8;i<n;i++)t=l[i+0[""]-8]>l[i+1]?(l[0[""]-8+i]^=l[i+1],l[""[0]-7+i]^=l[i+0[""]-8],l[i]^=l[i+0[""]-7]),1:t;}i="main()"[0];main(){for(i=0[""]-8;i<IS;i+=0[""]-7)scanf("%d"+10,&l[i]);b("");for(i=0;i<IS;"{",i++)printf(("",i)?z:"%d"+8,l["",i]);t=("printf(""Hello, world!");}
@20chan
20chan / async_io.md
Created November 6, 2018 09:00
https://cafbit.com/post/tokio_internals/ ์˜ Tokio Internals ๋ž€ ๊ธ€์„ ๋ณด๊ณ  ๋ฒˆ์—ญํ•˜๋‹ค ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์„œ ๋•Œ๋ ค์ณค์Šต๋‹ˆ๋‹ค ํ‰คํ‰คํˆฌํ…Œํ…Œใ…”ใ…”

Tokio Internals: ๋Ÿฌ์Šค๋šœ์˜ ๋น„๋™๊ธฐ IO ํ”„๋ ˆ์ž„์›Œํฌ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ํ•ฅ์•„๋จน๊ธฐ

Tokio๋Š” ๋น„๋™๊ธฐ IO๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋Ÿฌ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค. ์ด๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๋™๊ธฐ IO๋ณด๋‹ค ๋” ์ข‹์€ ํ™•์žฅ์„ฑ, ์„ฑ๋Šฅ ๊ทธ๋ฆฌ๊ณ  ์ž์› ์‚ฌ์šฉ์„ ๋ณด์—ฌ์ค€๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„, tokio๋Š” ์ด์˜ ๋‚œํ•ดํ•œ ์ถ”์ƒํ™”๋กœ ์–ด๋ ต๊ธฐ๋กœ ์•…๋ช…์ด ๋†’๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ์ฝ๊ณ  ๋‚œ ๋’ค์—๋„ ๋‚˜๋Š” ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

๋‚ด ์ด์ „ ๋น„๋™๊ธฐ IO ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฒฝํ—˜์ด Tokio๋ฅผ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ ๋ฐฉํ•ด๊ฐ€ ๋˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๋‚˜๋Š” ์šด์˜์ฒด์ œ์˜ ์„ ํƒ ๊ธฐ๋Šฅ (๋ฆฌ๋ˆ…์Šค์˜ epoll ๊ฐ™์€) ์„ ์‹œ์ž‘ ํฌ์ธํŠธ๋กœ ์žก๊ณ , ๊ทธ๋‹ค์Œ ๋””์ŠคํŒจ์น˜๋กœ, ์ƒํƒœ๋จธ์‹ , ..๋กœ ๊ฐ€๋Š” ๊ฒƒ์— ์ต์ˆ™ํ–ˆ๋‹ค. tokio์˜ ์ถ”์ƒํ™”๋ฅผ epoll_wait() ์ด ์–ด๋””์„œ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ดํ•ด์—†์ด ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€, ์กธ๋ผ ์–ด๋ ต๋‹ค. tokio์™€ future ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์€ ๋ˆˆ ๊ฐ€๋ฆฌ๊ณ  ๊ฑท๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋А๊ปด์ง„๋‹ค.

tokio ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด ํƒ‘๋‹ค์šด์œผ๋กœ ์ ‘๊ทผํ•˜๋Š” ๊ฑฐ๋ณด๋‹ค ๋ฐ”ํ…€์—…์œผ๋กœ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ณต๋ถ€ํ•˜๋Š”๊ฒŒ ์‹ค์ œ๋กœ ์ง€๊ธˆ์˜ ๊ตฌํ˜„์ด epoll ์ด๋ฒคํŠธ๋“ค์ด Future::poll()์˜ IO ์ ‘๊ทผ? ์†Œ๋น„? ๊นŒ์ง€ ๊ฐ€๋Š”์ง€ ์ดํ•ดํ•˜๋Š”๊ฒŒ ๋” ๋‚ซ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ๋‹ค. tokio ์™€ futures ์˜ ์ž์„ธํ•œ ํ•˜์ด๋ ˆ๋ฒจ ์‚ฌ์šฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋“ค์–ด๊ฐ€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ์ด๋ฏธ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ํŠœํ† ๋ฆฌ์–ผ์ด ์žˆ์œผ๋‹ˆ๊นŒ.. ๋น„๋™๊ธฐ IO์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์— ๊ด€ํ•œ ๋‚ด์šฉ๋„ ์ฑ… ํ•œ๊ถŒ์œผ๋กœ ์“ฐ๊ธฐ์— ์ถฉ๋ถ„ํ•˜๊ธฐ์— ์งง์€ ์š”์•ฝ๋งŒ์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค. ๋‚ด ๋ชฉํ‘œ๋Š” futures์™€ tokio์˜ polling์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ž์‹ ๊ฐ์„ ๊ฐ–๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

๋“ค์–ด๊ฐ€๊ธฐ์ „์—, tokio๋Š” ์•„์ง ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋Š” ์ค‘์ด๊ธฐ์— ์—ฌ๊ธฐ ๋‚ด์šฉ์ค‘ ๋”์ด์ƒ ๋งž์ง€ ์•Š์€ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด์„œ ๋‚˜๋Š” tokio-core 0.1.10๊ณผ futures 0.1.17, ๊ทธ๋ฆฌ๊ณ  mio 0.6.10์„ ์‚ฌ์šฉํ–ˆ๋‹ค. tokio-core ์˜ ์ด๋ฒคํŠธ ์‹œ์Šคํ…œ์€ ์ž์ฃผ ๋ฐ”๋€Œ๋‹ˆ๊นŒ ์ด์•ผ๊ธฐ๋ฅผ ์•ˆํ•˜๊ฒ ๋‹ค. ๋‚˜๋Š” tokio๋ฅผ ๋ฆฌ๋ˆ…์Šค์—์„œ ๊ณต๋ถ€ํ–ˆ๊ณ  ๋ช‡๋ช‡ ์ด์•ผ๊ธฐ๋“ค์€ epoll๊ฐ™์€ ํ”Œ๋žซํผ์— ์˜์กดํ•˜๋Š” ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„์€

@20chan
20chan / QuadraticEquation.cs
Created December 17, 2018 16:23
quadragtic equation solver
static num[] Solve(num a, num b, num c, num d, num e)
{
var p = b / (4 * a);
var q = (2 * c) / (3 * a);
var r = c * c - 3 * b * d + 12 * a * e;
var s = 2 * c * c - 9 * b * c * d + 27 * a * d * d + 27 * e * b * b - 72 * a * c * e;
var t = -(b.Pow(3) / a.Pow(3)) + (4 * b * c) / a.Pow(2) - (8 * d) / a;
var v_1 = (s + (-4 * r.Pow(3) + s.Pow(2)).Sqrt()).Sqrt3();
var v_2 = new num(2).Sqrt3();
var v_l = v_2 * r / (3 * a * v_1);
@20chan
20chan / disassembled.il
Last active January 29, 2019 02:09
Interface vs Generic where interface performance
.method private hidebysig static
void Say1 (
valuetype TrueAnswer t
) cil managed
{
// Method begins at RVA 0x2050
// Code size 9 (0x9)
.maxstack 8
IL_0000: ldarga.s t