Created
April 28, 2014 08:59
-
-
Save doraTeX/11366112 to your computer and use it in GitHub Desktop.
結城浩さんの CodeIQ の アルゴリズム問題「スペーストーキー問題」( https://codeiq.jp/ace/yuki_hiroshi/q839 )をTeX言語(TeX on LaTeX)で解きました。TeX Liveなどで pdflatex spacetalky とすればコンパイルできます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%! pdflatex speacetalky | |
\documentclass{article} | |
\usepackage{pgffor} | |
\usepackage{xstring} | |
\usepackage{ifthen} | |
\setlength\parindent{0pt} | |
\makeatletter | |
\newif\ifsuccess | |
\def\Output#1{\typeout{#1}#1\par} | |
\def\alphRepeat#1#2{% | |
\edef\loopNum{% | |
\if#2a1\fi | |
\if#2b2\fi | |
\if#2c3\fi | |
\if#2d4\fi | |
\if#2e5\fi | |
\if#2f6\fi | |
\if#2g7\fi | |
\if#2h8\fi | |
\if#2i9\fi | |
\if#2j10\fi | |
\if#2k11\fi | |
\if#2l12\fi | |
\if#2m13\fi | |
\if#2n14\fi | |
\if#2o15\fi | |
\if#2p16\fi | |
\if#2q17\fi | |
\if#2r18\fi | |
\if#2s19\fi | |
\if#2t20\fi | |
\if#2u21\fi | |
\if#2v22\fi | |
\if#2w23\fi | |
\if#2x24\fi | |
\if#2y25\fi | |
\if#2z26\fi | |
}% | |
\foreach \i in {1,...,\loopNum}{% | |
\xdef\result{\result#1}% | |
}% | |
\gdef\prevchar{#1}% | |
\gdef\prevtimes{#2}% | |
} | |
\def\solve#1{% | |
\StrLen{#1}[\len]% | |
\ifodd\len | |
\Output{X:#1}% | |
\else | |
\gdef\result{}% | |
\gdef\prevchar{X}% | |
\gdef\prevtimes{X}% | |
\successtrue | |
\def\target{#1}% | |
\@solve#1\relax\relax | |
\fi | |
} | |
\def\@solve#1#2{% | |
\ifx#1\relax | |
\ifsuccess | |
\Output{\result:\target}% | |
\else | |
\Output{X:\target}% | |
\fi | |
\let\@next\relax | |
\else | |
\ifthenelse{\equal{#1}{\prevchar}\AND\NOT\equal{\prevtimes}{z}}{% | |
\successfalse | |
}{% | |
\alphRepeat{#1}{#2}% | |
}% | |
\let\@next\@solve | |
\fi | |
\@next | |
} | |
\makeatother | |
\begin{document} | |
\solve{accept} | |
\solve{add} | |
\solve{advise} | |
\solve{afford} | |
\solve{agree} | |
\solve{alert} | |
\solve{analyse} | |
\solve{announce} | |
\solve{answer} | |
\solve{appear} | |
\solve{arrange} | |
\solve{arrive} | |
\solve{ask} | |
\solve{attach} | |
\solve{attack} | |
\solve{attempt} | |
\solve{attend} | |
\solve{attract} | |
\solve{avoid} | |
\solve{awake} | |
\solve{back} | |
\solve{bake} | |
\solve{balance} | |
\solve{ban} | |
\solve{bang} | |
\solve{bat} | |
\solve{bathe} | |
\solve{battle} | |
\solve{be} | |
\solve{beam} | |
\solve{behave} | |
\solve{bleach} | |
\solve{bless} | |
\solve{blind} | |
\solve{blow} | |
\solve{blush} | |
\solve{boast} | |
\solve{boil} | |
\solve{bolt} | |
\solve{bomb} | |
\solve{book} | |
\solve{bore} | |
\solve{borrow} | |
\solve{bounce} | |
\solve{bow} | |
\solve{brake} | |
\solve{breathe} | |
\solve{broadcast} | |
\solve{bruise} | |
\solve{brush} | |
\solve{bump} | |
\solve{bury} | |
\solve{buzz} | |
\solve{calculate} | |
\solve{call} | |
\solve{carry} | |
\solve{carve} | |
\solve{cause} | |
\solve{challenge} | |
\solve{change} | |
\solve{charge} | |
\solve{chase} | |
\solve{cheat} | |
\solve{check} | |
\solve{chew} | |
\solve{chop} | |
\solve{clean} | |
\solve{clear} | |
\solve{clip} | |
\solve{close} | |
\solve{coach} | |
\solve{coil} | |
\solve{collect} | |
\solve{colour} | |
\solve{comb} | |
\solve{command} | |
\solve{communicate} | |
\solve{compare} | |
\solve{compete} | |
\solve{complete} | |
\solve{concentrate} | |
\solve{concern} | |
\solve{confess} | |
\solve{consider} | |
\solve{consist} | |
\solve{contain} | |
\solve{continue} | |
\solve{correct} | |
\solve{cough} | |
\solve{count} | |
\solve{cover} | |
\solve{crack} | |
\solve{crash} | |
\solve{cross} | |
\solve{crush} | |
\solve{cry} | |
\solve{cure} | |
\solve{curl} | |
\solve{curve} | |
\solve{cycle} | |
\solve{dam} | |
\solve{damage} | |
\solve{dare} | |
\solve{deceive} | |
\solve{decide} | |
\solve{decorate} | |
\solve{delay} | |
\solve{delight} | |
\solve{deliver} | |
\solve{depend} | |
\solve{describe} | |
\solve{deserve} | |
\solve{destroy} | |
\solve{develop} | |
\solve{disappear} | |
\solve{disapprove} | |
\solve{disarm} | |
\solve{discover} | |
\solve{dislike} | |
\solve{divide} | |
\solve{double} | |
\solve{doubt} | |
\solve{drain} | |
\solve{draw} | |
\solve{dream} | |
\solve{drive} | |
\solve{drop} | |
\solve{drown} | |
\solve{drum} | |
\solve{dry} | |
\solve{dust} | |
\solve{embarrass} | |
\solve{employ} | |
\solve{empty} | |
\solve{encourage} | |
\solve{end} | |
\solve{enjoy} | |
\solve{enter} | |
\solve{escape} | |
\solve{examine} | |
\solve{excite} | |
\solve{excuse} | |
\solve{exercise} | |
\solve{exist} | |
\solve{expand} | |
\solve{expect} | |
\solve{explain} | |
\solve{explode} | |
\solve{extend} | |
\solve{fade} | |
\solve{fail} | |
\solve{fancy} | |
\solve{fasten} | |
\solve{fear} | |
\solve{feel} | |
\solve{fence} | |
\solve{fight} | |
\solve{file} | |
\solve{find} | |
\solve{fit} | |
\solve{flap} | |
\solve{flash} | |
\solve{float} | |
\solve{flood} | |
\solve{flow} | |
\solve{flower} | |
\solve{fly} | |
\solve{follow} | |
\solve{fool} | |
\solve{forget} | |
\solve{found} | |
\solve{frighten} | |
\solve{fry} | |
\solve{gather} | |
\solve{gaze} | |
\solve{get} | |
\solve{glow} | |
\solve{glue} | |
\solve{go} | |
\solve{grab} | |
\solve{grate} | |
\solve{grease} | |
\solve{greet} | |
\solve{grip} | |
\solve{groan} | |
\solve{grow} | |
\solve{guarantee} | |
\solve{guess} | |
\solve{guide} | |
\solve{hammer} | |
\solve{handle} | |
\solve{hang} | |
\solve{happen} | |
\solve{harass} | |
\solve{hate} | |
\solve{heal} | |
\solve{heap} | |
\solve{heat} | |
\solve{help} | |
\solve{hide} | |
\solve{hit} | |
\solve{hook} | |
\solve{hop} | |
\solve{hope} | |
\solve{hover} | |
\solve{hug} | |
\solve{hum} | |
\solve{hunt} | |
\solve{hurry} | |
\solve{identify} | |
\solve{ignore} | |
\solve{impress} | |
\solve{improve} | |
\solve{include} | |
\solve{increase} | |
\solve{influence} | |
\solve{inject} | |
\solve{instruct} | |
\solve{intend} | |
\solve{interest} | |
\solve{interfere} | |
\solve{interrupt} | |
\solve{introduce} | |
\solve{invent} | |
\solve{irritate} | |
\solve{jail} | |
\solve{jam} | |
\solve{jog} | |
\solve{join} | |
\solve{joke} | |
\solve{judge} | |
\solve{juggle} | |
\solve{jump} | |
\solve{keep} | |
\solve{kick} | |
\solve{kill} | |
\solve{kiss} | |
\solve{kneel} | |
\solve{knit} | |
\solve{knock} | |
\solve{knot} | |
\solve{label} | |
\solve{land} | |
\solve{last} | |
\solve{launch} | |
\solve{learn} | |
\solve{let} | |
\solve{level} | |
\solve{lie} | |
\solve{lighten} | |
\solve{like} | |
\solve{listen} | |
\solve{live} | |
\solve{load} | |
\solve{long} | |
\solve{look} | |
\solve{lose} | |
\solve{love} | |
\solve{make} | |
\solve{man} | |
\solve{manage} | |
\solve{march} | |
\solve{mark} | |
\solve{marry} | |
\solve{match} | |
\solve{matter} | |
\solve{mean} | |
\solve{measure} | |
\solve{meddle} | |
\solve{meet} | |
\solve{melt} | |
\solve{memorize} | |
\solve{mess} | |
\solve{milk} | |
\solve{mine} | |
\solve{miss} | |
\solve{mix} | |
\solve{moan} | |
\solve{mourn} | |
\solve{muddle} | |
\solve{nail} | |
\solve{need} | |
\solve{nest} | |
\solve{nod} | |
\solve{note} | |
\solve{notice} | |
\solve{number} | |
\solve{obey} | |
\solve{object} | |
\solve{observe} | |
\solve{obtain} | |
\solve{offend} | |
\solve{offer} | |
\solve{open} | |
\solve{overflow} | |
\solve{owe} | |
\solve{own} | |
\solve{pack} | |
\solve{paddle} | |
\solve{paint} | |
\solve{park} | |
\solve{pass} | |
\solve{paste} | |
\solve{pat} | |
\solve{pause} | |
\solve{peck} | |
\solve{pedal} | |
\solve{peep} | |
\solve{perform} | |
\solve{permit} | |
\solve{phone} | |
\solve{pick} | |
\solve{pinch} | |
\solve{pine} | |
\solve{place} | |
\solve{plan} | |
\solve{plant} | |
\solve{please} | |
\solve{point} | |
\solve{poke} | |
\solve{polish} | |
\solve{pop} | |
\solve{post} | |
\solve{pour} | |
\solve{practise} | |
\solve{pray} | |
\solve{preach} | |
\solve{precede} | |
\solve{prefer} | |
\solve{prepare} | |
\solve{present} | |
\solve{press} | |
\solve{pretend} | |
\solve{prevent} | |
\solve{prick} | |
\solve{print} | |
\solve{produce} | |
\solve{program} | |
\solve{promise} | |
\solve{pull} | |
\solve{pump} | |
\solve{punch} | |
\solve{puncture} | |
\solve{punish} | |
\solve{push} | |
\solve{question} | |
\solve{queue} | |
\solve{radiate} | |
\solve{rain} | |
\solve{receive} | |
\solve{recognise} | |
\solve{record} | |
\solve{reduce} | |
\solve{regret} | |
\solve{reign} | |
\solve{relax} | |
\solve{release} | |
\solve{rely} | |
\solve{remember} | |
\solve{remind} | |
\solve{remove} | |
\solve{repair} | |
\solve{repeat} | |
\solve{replace} | |
\solve{reply} | |
\solve{report} | |
\solve{reproduce} | |
\solve{request} | |
\solve{rescue} | |
\solve{return} | |
\solve{rhyme} | |
\solve{risk} | |
\solve{rob} | |
\solve{rock} | |
\solve{roll} | |
\solve{rot} | |
\solve{ruin} | |
\solve{rule} | |
\solve{rush} | |
\solve{sack} | |
\solve{satisfy} | |
\solve{save} | |
\solve{saw} | |
\solve{say} | |
\solve{scare} | |
\solve{scold} | |
\solve{scorch} | |
\solve{scrape} | |
\solve{scratch} | |
\solve{scream} | |
\solve{screw} | |
\solve{scribble} | |
\solve{scrub} | |
\solve{seal} | |
\solve{search} | |
\solve{separate} | |
\solve{settle} | |
\solve{share} | |
\solve{shave} | |
\solve{shiver} | |
\solve{shock} | |
\solve{shop} | |
\solve{sigh} | |
\solve{sign} | |
\solve{signal} | |
\solve{sin} | |
\solve{skip} | |
\solve{slap} | |
\solve{slip} | |
\solve{slow} | |
\solve{smash} | |
\solve{smell} | |
\solve{smile} | |
\solve{snatch} | |
\solve{sneeze} | |
\solve{sniff} | |
\solve{snow} | |
\solve{soak} | |
\solve{soothe} | |
\solve{sound} | |
\solve{spark} | |
\solve{sparkle} | |
\solve{spell} | |
\solve{spill} | |
\solve{spoil} | |
\solve{spray} | |
\solve{sprout} | |
\solve{squash} | |
\solve{squeak} | |
\solve{squeal} | |
\solve{squeezed} | |
\solve{stain} | |
\solve{stamp} | |
\solve{stare} | |
\solve{start} | |
\solve{stay} | |
\solve{steer} | |
\solve{step} | |
\solve{stir} | |
\solve{stitch} | |
\solve{strap} | |
\solve{strengthen} | |
\solve{stroke} | |
\solve{stuff} | |
\solve{subtract} | |
\solve{succeed} | |
\solve{suck} | |
\solve{suffer} | |
\solve{supply} | |
\solve{support} | |
\solve{surprise} | |
\solve{suspect} | |
\solve{switch} | |
\solve{talk} | |
\solve{tame} | |
\solve{tap} | |
\solve{taste} | |
\solve{tease} | |
\solve{telephone} | |
\solve{tempt} | |
\solve{test} | |
\solve{thaw} | |
\solve{tickle} | |
\solve{tie} | |
\solve{time} | |
\solve{tip} | |
\solve{tire} | |
\solve{tour} | |
\solve{trade} | |
\solve{transport} | |
\solve{tremble} | |
\solve{trot} | |
\solve{trouble} | |
\solve{try} | |
\solve{tumble} | |
\solve{turn} | |
\solve{type} | |
\solve{undress} | |
\solve{unfasten} | |
\solve{unite} | |
\solve{unpack} | |
\solve{untidy} | |
\solve{use} | |
\solve{vanish} | |
\solve{walk} | |
\solve{wander} | |
\solve{want} | |
\solve{warm} | |
\solve{warn} | |
\solve{wash} | |
\solve{waste} | |
\solve{watch} | |
\solve{water} | |
\solve{wave} | |
\solve{weigh} | |
\solve{welcome} | |
\solve{whine} | |
\solve{whip} | |
\solve{whirl} | |
\solve{whisper} | |
\solve{whistle} | |
\solve{wink} | |
\solve{wish} | |
\solve{wobble} | |
\solve{work} | |
\solve{worry} | |
\solve{wrap} | |
\solve{wreck} | |
\solve{wrestle} | |
\solve{yell} | |
\solve{zip} | |
\solve{zoom} | |
\end{document} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment