ããã°ã©ã ã§è§£ãæ°å¦ããºã«: å人ã¨ã¹ã¤ããã®é¨å±ã®åé¡ - 解çã®èªåãã§ãã¯ã®ããã¿
ãã®è¨äºã¯はてなエンジニア Advent Calendar 2018ã®18æ¥ç®ã®è¨äºã§ã. æ¨æ¥ã¯id:Windymeltã®Smart::Argsのパーサを書いたã§ãã. ææ¥ã®æ å½ã¯id:hokkai7goã§ã.
ä»ã®æ å½è ã®è¨äºã¯å²ã¨æ¥åã£ã½ããã®ãå¤ãã§ãã, ä»åã¯è¶£å³ã£ã½ãããããã®ãã¿ã§ã. 社å ã§ã¨ããæ°å¦ããºã«ãç´¹ä»ããã¨ããAdvent Calendarã«æ¸ãã¦ããã¨ãªã¯ã¨ã¹ãããã£ãã®ã§, ç´¹ä»ãã¾ã. åã«åé¡ãç´¹ä»ããã ãã§ã¯é¢ç½ããªãã®ã§, ã³ã¼ããæ¸ãã¦è§£çã§ããããã«ãã¦ã¿ã¾ãã.
åé¡
ããªãã¯100人ã®å人ã®ä¸äººã§ã. å ¨å¡ã§ä»¥ä¸ã®ãããªã²ã¼ã ããã¦, è¦äºåå©ã§ããã°å ¨å¡éæ¾, è² ããã°å ¨å¡æ»åã¨ãªãã¾ã.
- ã²ã¼ã éå§ã¨åæã«å ¨å¡å¥ã ã®ç¬æ¿ã«å ¥ãã¾ã
- ç¬æ¿å ãéè·¯ã§ä»ã®å人ã¨ããã¨ããããã¨ã¯ã§ãã¾ãã
- ã©ã³ãã ã«1人ãã¤ã¹ã¤ããã®é¨å±ã«å¼ã°ãã¾ã
- ååãªæéå¾ ã¦ã°åã人ãä½åº¦ã§ãå¼ã°ãã¾ã
- ãã¾èª°ãå¼ã°ãã¦ãããã¯æ¬äººä»¥å¤ã«ã¯ãããã¾ãã
- é¨å±ã«ã¯ã¹ã¤ããã2ã¤(Aã¨B)ãã以å¤ã¯ãªã«ãããã¾ãã
- ã²ã¼ã ã«åå ä¸ã®å人以å¤ããã®é¨å±ã«å ¥ããã¨ã¯ããã¾ãã
- ã¹ã¤ããã®é¨å±ã§ã¯ä»¥ä¸ã®ãã¨ãã§ãã¾ã
- 2ã¤ããã¹ã¤ããã®on/offã®ç¶æ ã確èªãã
- 2ã¤ããã¹ã¤ããã®ãããã, ãããã¯ä¸¡æ¹ã®on/offãåãæ¿ãã
- å人ã¯ãã¤ã§ããå ¨å¡ã¹ã¤ããã®é¨å±ã«å ¥ã£ã!ãã¨å®£è¨ãããã¨ãã§ãã¾ã
- æ¬å½ã§ããã°åå©ã¨ãªãã¾ã
- ã¾ã ä¸åº¦ãé¨å±ã«å ¥ã£ã¦ããªã人ãããããã®æç¹ã§è² ãã§ã
- ã²ã¼ã éå§æç¹ã§ã®ã¹ã¤ããã®ç¶æ ã¯ã©ã³ãã ã«æ±ºãããã¾ã
ã²ã¼ã ãéå§ããåã«, åäººå ¨å¡ã§éã¾ã£ã¦ä½æ¦ãç«ã¦ããã¨ãã§ãã¾ã. å¿ ãåå©ã§ããä½æ¦ãèãã¦ãã ãã.
çããããã£ã¦ç©è¶³ããªããã°ä»¥ä¸ã«ã¤ãã¦ãèãã¦ãã ãã.
- ã¹ã¤ããã®é¨å±ã«å ¥ã£ãç·åæ°(ã®æå¾ å¤)ããªãã¹ãå°ãªããªããããªä½æ¦ãç«ã¦ã¦ãã ãã
- ã¹ã¤ããã1ã¤ãã使ããã«åå©ããæ¹æ³ãèãã¦ãã ãã
ããã°ã©ãççºæ³
ããã°ã©ããªãèé«åå°ã§ãã¹ã¤ãã2ã¤=æ å ±2ãããã§4éãã®å¤ããæã¦ãªããã ãã100æ°ããã®ã¯ç¡ç!ãã£ã¦æã£ã¡ãããã¤ã§ãã. ãã¡ããåé¡ã«ãªã£ã¦ããããã«ã¯ã¡ããã¨è§£ãã¾ã. ã¹ã¤ã«ãªããªãã¨ãã§ãããã¾ãã.
ãªãããçãã¯ããã¨ãããã¨ã§, æ°ã«ããããã°ã©ãè³ã§ã¡ãã£ã¨èãã¦ã¿ãã¨, ãã®ãä½æ¦ãèãã¦ãã ãããã¨ããã®ã¯ãã¢ã«ã´ãªãºã ãèãã¦ãã ãããã¨ãããã¨ã®ããã«æãã¾ã. 100人ã®å人ãããããã©ã®ãããªã¢ã«ã´ãªãºã ã«æ²¿ã£ã¦è¡åããã°åå©ã§ãããã¨ããåé¡.
ãããªãã¨ã³ã¼ããæ¸ãã¦è§£çãã¦ã¿ãããªãã¾ã. ã³ã¼ããæ¸ãã¦è§£çã§ãããªã, 解çãæ£ãããã©ããã®ãã§ãã¯ãèªååããããªãã¾ã. ã¨ãããã¨ã§, ãã¾ãã!
Pull Requestãéãã¨èªåã§æ¡ç¹ããã¦å ¥å®¤åæ°ã®å°ãªãã使ç¨ããã¹ã¤ããã®å°ãªãã§ã¹ã³ã¢ãã¤ã, é ä½ãªã©ãこんなかんじã§åºã¾ã.
解çæ¹æ³
å®éã«, 誰ã§ã以ä¸ã®ããã«ãã¦è§£çãããã¨ãã§ããã®ã§, æ¯éãã£ã¦ã¿ã¦ãã ãã.
- Golangç°å¢ãç¨æ
- tarao/prisoners-switchã
yourname/prisoners-switch
ã«Fork go get github.com/tarao/prisoners-switch
yourname/prisoners-switch
ã§ã¯ãªãtarao/prisoners-switch
ãªç¹ã«æ³¨æ
cd "$GOPATH"/src/github.com/tarao/prisoners-switch
git remote add yourname [email protected]:yourname/prisoners-switch
git checkout -b your-answer
strategy/my_strategy.go
ãç·¨éãã¦è§£çãã¦git commit
git push --set-upstream yourname your-answer
your-answer
ãã©ã³ããtarao/prisoners-switch
ã®master
ãã©ã³ãã«Pull Requestãã
解çã¯ä»¥ä¸ã®å¶éã«åè´ãã¦ããå¿ è¦ãããã¾ã.
- æ¸ãæãã¦ããã®ã¯
strategy/
以ä¸ã®ã¿- ãã¡ã¤ã«ã追å ãã¦ããã
- å¤æ´ãã¡ã¤ã«æ°ã®ä¸éã¯20
github.com/tarao/prisoners-switch/rule
以å¤ãimport
ãã¦ã¯ãããªã
ãã¾ã解ãã¦ãããæå
ã§ç¢ºèªãããå ´åã¯verifier/run
ãå®è¡ããã¨ç¢ºèªã§ãã¾ã.
Pull Requestã§è§£çããæ¹å¼ãªã®ã§, å½ããåã§ããä»ã®äººã®è§£çãè¦ãã¾ã. èªåã§è§£ããæ¹ãå½ç¶ãããããã§ããã. ããé«ãã¹ã³ã¢ãç®æãã¨ããã®ãããããã§ã.
åºå ¸
åããã®åé¡ãç¥ã£ãã®ã¯10å¹´ãããåã«id:tozimaããã«èããããã§, id:tozimaããã¯ãã¼ã§èªç§°æ°å¦ç§5åç*1ã«çµ¡ã¾ãã¦åé¡ãåºãããããã§, é·ããåºèªä¸æãªåé¡ã§ãã. ä»åãã®è¨äºãæ¸ãã«ããã£ã¦æ¹ãã¦èª¿ã¹ã¦ã¿ãã, ããç¨åº¦ã¾ã§å¤æããã®ã§æ¸ãæ®ãã¦ããã¾ã.
çµè«ããè¨ãã¨, ã¤ã³ã¿ã¼ãããã§è¾¿ããç¯å²ã®ååºã¯IBM Researchの月刊数学パズルã§ãã.
IBM Research | Ponder This | July 2002 Challenge
ç´°ããªå·®ç°ã¯ãã£ã¦,
- 人æ°ã23人
- ä¸åº¦ã®å ¥å®¤ã§ã¯1ã¤ã®ã¹ã¤ããããæä½ã§ãã, ã¾ã, ããããã®ã¹ã¤ãããæä½ããªããã°ãªããªã*2
ã¨ãããã®ã ã£ãããã§ã.
This puzzle has been making the rounds of Hungarian mathematicians'parties.
IBM Research | Ponder this
ã¨ãã, ãã®æåããºã«ã®ããã«æ°è¦ã«èæ¡ãããã®ã§ã¯ãªãã®ã確ãã§ãã, ãã以ä¸ã®åºå ¸ã¯è¾¿ãã¾ãã.
ããããæè¿ã®ãã®ã§è¨åãã¦ãããã®ãå¤ãããã¾ã.
- 100 Prisoners and a Light Bulb. William Wu. December 2002.
- 100人
- åå©ããã¨MENSAã«å ¥ããã¨ããããªã¨ã¼ã·ã§ã³ã¯ãã®äººã«ãããã®
- Mathematical Puzzles. Peter Winkler. 2003.
- One Hundred Prisoners and a Light Bulb (English Edition). Hans van Ditmarsch, Barteld Kooi, Elancheziyan. 2015.
- åèã¯ãªã©ã³ãèªããã (ã¡ãã£ã¨ã©ããªã®ãããããªãã£ã)
- MSRIのニュースレターã«ããã¨åèã¯2004å¹´ã®Math Horizonsãªã®ã§Winklerã®æ¹ãå
èªåãã§ãã¯ã®ããã¿
èªåãã§ãã¯ãããã¨ãã®Pull Requestã®ããã«ãã§ãã¯ãã¼ã¯ãã¤ãã¾ã:
https://github.com/tarao/prisoners-switch/pull/7
(æ£ãã解çã®ã³ã¼ãã¯å«ãã¦ãã¾ããã, ä¾ç¤ºã®ããã«ã¤ã³ãããã¦ç¡çç¢çã«æ£è§£ã®ã¹ãã¼ã¿ã¹ã«ãã¦ãã¾ã)
èªåãã§ãã¯ã¯æ¬¡ã®ããã«ãªã£ã¦ãã¾ã.
- Pull Requestãããã¨Travis CIã§
verifier/run
ãå®è¡ãããstrategy/
以ä¸ã«ä½è¨ãªimport
ããªãããã§ãã¯- ゲームを複数回実行してすべて勝利することを確認, ã¹ã³ã¢ãªã©ãåºå
- Travis CIã®webhookがGoogle Apps Script (GAS)をトリガ
- GASãビルド情報やPull Request情報を集める
- GASã改竄チェック
- GASãスコアなどの情報をGoogle Sheetsに保存
- Google Sheetsãスコアから順位を計算
- GASãGitHubのコミットステータスを更新
- (GASãSlackに通知)
ããã¨ã¯å¥ã«, 順位の変動をGitHubのコミットステータスに反映するための定期処理ãGASã§åãã¦ãã¾ã.
GitHubã®ã³ãããã¹ãã¼ã¿ã¹ã®"Details"ã§è¦ãããã¹ã³ã¢ãé ä½ã®åºãç»é¢ã¯, å®ã¯GitHub Pagesã«é ç½®ããéçãã¡ã¤ã«ã§, ã¯ã¨ãªãã©ã¡ã¼ã¿ãããã¹ã¦ã®æ å ±ãåãåã£ã¦JavaScriptã§ã¬ã³ããªã³ã°ãã¦ããã ãã§ã. ãªã®ã§ãé ä½ã®å¤åãGitHubã®ã³ãããã¹ãã¼ã¿ã¹ã«åæ ãã¨ããã®ã¯åã«ãªã³ã¯URLãå¤ãã¦ããã ãã§ã.
Google Sheets (Googleã¹ãã¬ããã·ã¼ã)ã«ä¿åããã®ã¯, ãã¨ãã¨ã¯åã«è§£çãã人ãã¡ã®ã¹ã³ã¢ãä¸è¦§ãããã ãã§ããã, ããããä½ã£ã¦ãããã¡ã«é ä½ãåºãããé¢ç½ããã¨æã, ã©ãã«ãã§ããªããã¨æã£ããRANK
é¢æ°ä½¿ãã ãã§ã§ãã¦, ã¨ã«ããã¹ããã§ãã.
ãããã¦, ã¨ãã«æ¡ç¹ãçµæã®è¡¨ç¤ºã®ããã«å°ç¨ã®ãµã¼ããç«ã¦ããããªãã¨ã¯ããªãã§æ¸ã¿ã¾ãã.
ãã¼ã対ç
ä»åãã¡ã°ãé¢ç½ãã£ãã¨ããã§ã. ã³ã¼ãã§è§£çã¨ãªãã¨, 解çããå´ãããªããããããªãã¨ãã§ãã¦ãã¾ãã®ã§, é¡æã«æ²¿ããªãæ¹æ³ã§ãæ£è§£ãã®å¤å®ãåºããã¨ãã§ãã¦ãã¾ãå¯è½æ§ããã, ãã¾ã対çããå¿ è¦ãããã¾ã. ã©ããªå¯¾çãããã, ä¾ã¨ã¨ãã«è¦ã¦ããã¾ããã.
対çã®æ¼ããè¦ã¤ãã人ã¯framework
ãã©ã³ãã«å¯¾ãã¦å¯¾çãPull Requestãã¦ãã ãã(master
ãã©ã³ãã«ããã¨èªåãã§ãã¯ãèµ°ã£ã¦ãã¾ãããã¨ããã ããªã®ã§ä¿®æ£æ¡ãããããªããªãã§ãããã§ã). ãã¡ãããã®åã«ãã¼ãã§é«å¾ç¹ãå©ãåºã, ã¨ããã®ããã£ã¦ããã¾ãã¾ãã(対ç次第å¾ç¹ã¯ç¡å¹ã«ãã¾ã).
ãä»ã®å人ã¨ããã¨ããããã¨ã¯ã§ãã¾ããã
ã³ã¼ãåãããåé¡ãè¦ãã, ã¾ãã°ãã¼ãã«å¤æ°ã«ã©ã®å人ãé¨å±ã«å ¥ã£ããè¨é²ãã¦ãã£ã¦, å ¨å¡ãå ¥ã£ã¦ãããåå©å®£è¨ãã, ã¨ããã®ããã£ã¦ã¿ãã®ã§ã¯ãªãã§ãããã. ãªã«ã対çããã¦ãããããããªããã©, ããã¦ãªãã£ããããã§è§£ããã®ã¯æãããªã®ã§, ã²ã¨ã¾ãæçã§è©¦ãã¦ã¿ãããªãã¾ã.
ä¸æ¹, 対çããå´ã¨ãã¦ã¯ããã¯åä»ãªåé¡ã§ã. ç´ ç´ã«èããã¨åå人ã®ã³ã¼ããå¥ã ã®ãµã³ãããã¯ã¹ã§å®è¡ããªãã¨ãããªã? ã©ããã£ã¦? ã¨ãªãã¾ã.
ããã¾ã大æãããªãã¨ããããã¯ãªãã£ãã®ã§, ä»åã¯çºæ³ã転æãã¦, ãä»ã®å人ã¨ããã¨ããããã¨ã¯ã§ãã¾ããããç´æ¥å®ç¾ããã®ã§ã¯ãªã, ãããã¨ããããã¨æãã°ã§ããã, 話ããç¸æã¯å¥ã®ä¸¦è¡ä¸çã®å人ãããããªããã¨ãã¾ãã. ã²ã¼ã ãè¤æ°ååæã«åãã¦, åãçªå·ã®å人ãè¤æ°äººçã¾ããããã«ãã¾ãã. å人ã®ã¤ã³ã¹ã¿ã³ã¹ã®åæåé åºãã°ãã°ãã«ãã¦, ã©ã®å人ãã©ã®å人ã¨åãåã®ã²ã¼ã ã«ããã®ãããããªããã¾ãã.
å®ã¯ããã ãã§ã¯ãå ¨ã²ã¼ã ã§åå©å®£è¨ã§ããã ãã®å ¥å®¤ããã£ãã宣è¨ãããã¨ãããã¨ãã§ãã¦ãã¾ãã¾ã. ãã¨ãã°10ã²ã¼ã èµ°ã£ã¦ãããªã, åãçªå·ã§ã¤ã³ã¹ã¿ã³ã¹ãå¥ã®å人ã10人ã¨ãé¨å±ã«å ¥ã£ããã©ãã確ãããã°ããã®ã§ã(ä¸ã®ä¾ã¯å®éãããã£ã¦ãããã®ã§ã).
ãã®ãã, æçµçãªå¯¾çã¨ãã¦ã¯ã絶対ã«åå©ã§ããªãã²ã¼ã ããããã¤ãæ··ãã¦ããã¾ã(ãã¡ãããããã®ã²ã¼ã ã¸ã®åå©ã¯æ£è§£å¤å®ã®æ¡ä»¶ããã¯é¤å¤ãã¾ã). ãããã®ã²ã¼ã ã«ã¯ããããå°ãªãã¨ã1人, 絶対ã«é¨å±ã«å¼ã°ããªãå人ããã¾ã. å ¨ã²ã¼ã ã®å ¨å人ãé¨å±ã«å ¥ã£ããã¨ã確ããããã¨ããã¨æ°¸ä¹ ã«åå©å®£è¨ã§ããªããªãã¾ã. ã絶対ã«åå©ã§ããªãã²ã¼ã ãã®åå¨ã¯ããæå³åºé¡å´ã®ãã¼ãã¨ããæãã§ãã.
ãªãããã¶ãä¸è¬è«ã¨ãã¦ãä»äººã¨ããã¨ããããã¨ã¯ã§ããªããã¨ããããã並è¡ä¸çã®ä»äººã¨ããã¨ããã¦ãã¾ããã¯, ããæå³ã§ã¯åå¤(?)ã¨ãå対(?)ã¿ãããªãã¨ãå½¢å¼çã«è¨ãããããããããªããã¨å¦æ³ãã¾ããã, å¦æ³ããã ãã§èª¿ã¹ããèãããã¯ä½ããã¦ãã¾ãã. ãåç¥ã®æ¹ãããããã£ããæãã¦ãã ãã.
ä¸æ£ãªçµæã®åºåãã®ä»
ã³ã¼ããèªç±ã«æ¸ããã¨ãããã¨ã¯, å½ã®ãã§ãã¯çµæãåºåãã¦ããçµäºããã, ãããã¯ãªãã¬ã¯ã·ã§ã³ããã¤ã³ã¿æ¼ç®ã«ããä¸æ£ãªã¡ã¢ãªã¢ã¯ã»ã¹ãªã©ã§ãã§ãã¯ãå®è¡ããé¨åã®ã³ã¼ããä¸æ£ã«æä½ãããã¨ã§ç¡çç¢çã«æ£è§£å¤å®ã«æã£ã¦ãããã¨ãã§ãã¦ãã¾ãããã§ã.
ä»åã¯ãã¾ãã¾è¨èªã«ã¯Goãé¸ãã ã®ã§, Goã§ã¯ãã®ãããªãã¨ãããã«ã¯ç¹å®ã®ããã±ã¼ã¸(fmt
ã¨ãos
ã¨ãreflect
ã¨ãunsafe
ã¨ã)ãimport
ããå¿
è¦ãããã¯ãã§ã. ããã§, ã²ã¼ã ã®ã«ã¼ã«å®ç¾©ä»¥å¤ã®ããã±ã¼ã¸ã®import
ãä¸åç¦æ¢ãããã¨ã«ãã¦ã¿ã¾ãã.
go list -f '{{range $imp := .Imports}}{{printf "%s\n" $imp}}{{end}}'
ã¨ããã¨import
ãããããã±ã¼ã¸ä¸è¦§ãåå¾ã§ããã®ã§, 余計なものがあったらダメã¨ãããã¨ã«ãã¦ãã¾ã.
èªåãã§ãã¯æ¹æ³ãã®ãã®ã®æ¹ç«
ããããä¸æ£ãªimport
ããªããã©ããã®ãã§ãã¯ã¨ã, å¤å®çµæãåºåãã¦ããé¨åã¨ã, èªåãã§ãã¯æ©æ§ãã®ãã®ããªãã¸ããªã«å«ã¾ãã¦ããã®ã§, ããããæ¹ç«ããã¦ãã¾ã£ããã©ãããããããã¾ãã.
ãã®ããã«, å¤æ´ã®ãã£ãé¨åã«èªåãã§ãã¯æ©æ§ã®ã³ã¼ããå«ã¾ãã¦ããªãããã§ãã¯ãã¦ãã¾ã. ããã¯åã«GitHubのAPIで変更のあったファイルのリストを取得ããã°ããã§ãã. ãã®é¨åã¯Travis CIã§å®è¡ãããverifier/run
ã®ä¸ã§ãã£ã¦ãæå³ããªã(æ¹ç«ããã¦ãã¾ã)ã®ã§, GASã§ããã¾ã.
ãã ã, Travis CIã®webhookã®ãã¤ãã¼ãã¯æé ããã¦ããå¯è½æ§ãããã®ã§æ³¨æãå¿ è¦ã§ã. ãã¨ãã°, ãã«ãIDãPull Requestã®URLãªã©ã¯æ£ããæ£è§£ãã¦ãããã®ãæãã¦ããã¦, ã³ãããã¹ãã¼ã¿ã¹ã®å¯¾è±¡ã®SHA1ã ãå¥ã®ãã®ã«ãããã¨ã§, æ¬æ¥ã¯æ£è§£ãã¦ããªããã®ãæ£è§£ã®ã¹ãã¼ã¿ã¹ã«ãããã¨ãã¦ããããããã¾ãã.
ãã®ãããªãã¨ãé¿ããããã«, GASå´ã§ã¯ããªã¬ã¨ãªããã«ãIDã®ã¿å©ç¨ãã¦, ãã以å¤ã®Pull Requestã®æ å ±, å®è¡çµæã®ãã°(æ£è§£å¤å®ãã¹ã³ã¢ã®æ å ±), å¤æ´ã®ãã£ããã¡ã¤ã«ä¸è¦§ãªã©ã¯ãã¹ã¦æ¹ãã¦APIã§åå¾ãã¾ã. ããããã°, ãã¤ãã¼ããæé ããã¦ãåã«ç¹å®ã®ãã«ãã®ãã§ãã¯ãä½è¨ã«èµ°ãã ãã§, çµæãæ¹ç«ãããã¨ã¯ã§ãã¾ãã.
Travis CIã®webhookã«ã¯æ¹ç«é²æ¢ã®ããã«Signature
ãããã¨ããã®ãã¤ãã¦ãã¾ãã, GASã§æ¨æºã§ä½¿ããã©ã¤ãã©ãªã ãã§ãããæ¤è¨¼ããã®ã¯ã¡ãã£ã¨é¢åã ã£ãã®ã§ä½¿ãã¾ããã§ãã. ãã¨ã¯, Travis CIã§ã¯forked pull requestã«å¯¾ãã¦secure
ã«ããç°å¢å¤æ°ã¯(ã»ãã¥ãªãã£ä¸ã®çç±ã§)使ãã¾ããã, webhookãsecure
ã«ãã¦ãã(ãã°ã¨ãã«ã¯ä¸å表示ããªã)ã¨ããã®ã ãã§ãã§ããã¨ããã¡ãã£ã¨æ¥½ã«ãªãããã§ã(ãããpull requestã«å¯¾ãã¦ã¯ä½¿ããªãããã§ãã).
ãããã«
ä»åã¯ç¹å®ã®åé¡ã«å¯¾ãã¦Pull Requestã§è§£çã§ããããã«ãã¦ã¿ã¾ããã, ããã¡ãã£ã¨å·¥å¤«ããã°å¤§æ ã®ããã¿ã¯ä½¿ãã¾ããã¦, ä½ã³ã¹ãã§ããããåé¡ãããã¤ãä½ããã¨ãã§ããããããã¾ãã. ä»ã®äººã®è§£çãè¦ãã¦ãã¾ãã®ã§, ã³ã³ãã¹ãã¨ã大å¦ã®èª²é¡ã¿ãããªãã®ã«ã¯ä½¿ãã¾ããã, éã³ã¨ãã¦ã¯ãããããã§ããããããªæ°ããã¾ã.
追è¨
24æéçµããªããã¡ã«æåã®æ£è§£è ãåºã¾ãã. @tomohisaotaããã«ãã解çã§, å¹ç(ã¹ãããæ°ã®å°ãªã)ãããªãããã§ã.
ããã«ããå¾ã«ã¹ã¤ãã1ã¤ã®æ£è§£ãåºãã¦ããã¾ãã. ææ!
ããã¾ã§ã«æ稿ããã解çã¯ä»¥ä¸ã§èª°ã§ãä¸è¦§ã§ããããã«ãã¾ãã.
*1:é¢è¥¿ãªã®ã§5åçã¨ããã®ã¯5å¹´çã®ãã¨ã§ã
*2:æä½ãã¦ãããªãã¦ãããã¨ããåé¡è¨å®ã§ã¹ã¤ãã1ã¤ã®è§£ããããªã, å¿ ãæä½ããªããã°ãªããªãåé¡è¨å®ã§ã¹ã¤ãã2ã¤ã®è§£ãããã®ã¯èªæã§ãã. æä½ããããªãã¨ãã«èº«ä»£ããã¨ãã¦æä½ããæ¹ã®ã¹ã¤ããã決ãã¦ãã, ã¨ããã°ããããã§ã.