Skip to content

Instantly share code, notes, and snippets.

@doraTeX
Created April 28, 2014 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save doraTeX/11366112 to your computer and use it in GitHub Desktop.
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 とすればコンパイルできます。
%! 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