ときどきの雑記帖 RE* (新南口)
もしも願いがかなうなら
絶滅と根絶と撲滅
通勤時にとある工事現場のそばを通るのだけど その現場にあった看板に 「落下事故の絶滅」 みたいな標語があった。
そこはふつー 「根絶」とか「撲滅」を使うのでは?🤔
ハヤカワSF
ハヤカワSF文庫の 魔王子シリーズとか ノウンスペースシリーズもう一回読みたいなあと思い続けて幾星霜 (どちらも「絶版」)。
約400点の原画並ぶ「萩尾望都SF原画展」が6年ぶりに東京凱旋、トークショーも開催 | マイナビニュース
萩尾望都の企画展「萩尾望都SF原画展 宇宙にあそび、異世界にはばたく」が、7月9日から24日にかけて東京・アーツ千代田3331で開催される。
期間:2022年7月9日(土)~24日(日)※会期中無休。 会場:東京都 アーツ千代田3331 時間:11:00~20:00 ※入館は閉館の30分前まで。 料金:一般1000円、大学生・高校生 700円、中学生500円、 小学生以下無料(※学生証または生徒手帳の持参が必要)
吉祥寺で開催のときも行っているのだけど 「魔王子」の表紙もあったんだよね。 また行こうかな。
そして
アーツ千代田3331
そのアーツ千代田3331と言えばこういう話も。
千代田区「ちよだアートスクエア(アーツ千代田 3331)」契約満了のお知らせ|ニュース|3331 Arts Chiyoda|アーツ千代田 3331
ここはシド・ミード展と何で行ったっけか。
R
HTTP_PROXY
と
HTTPS_PROXY
を設定して解決。
しかしなんで以前のバージョンではこれをしないでも行けたんだろう?
sort と locale
GNU Coreutils: 7.1 sort: テキストファイルを並べ替える
Ubuntu (Pop!_OS) で ls -l の出力を sort に食わせたらアルファベットの間に記号が来た。壊れてるのは誰だ。 - はてなの鴨澤
これらの文字は、LC_COLLATE=C では、素のアルファベットの後ろに回されてしまう。LC_COLLATE=Unicode なら正しく 「素の文字→記号付き文字」の順でソートされるのだが、こんどはハイフンが無視されてしまう。
opengroup
DESCRIPTION
The sort utility shall perform one of the following functions:
- Sort lines of all the named files together and write the result to the specified output.
- Merge lines of all the named (presorted) files together and write the result to the specified output.
- Check that a single input file is correctly presorted.
Comparisons shall be based on one or more sort keys extracted from each line of input (or, if no sort keys are specified, the entire line up to, but not including, the terminating), and shall be performed using the collating sequence of the current locale.
FAQ
A very common issue encountered is with the default ordering of the sort utility. Usually what is required is a simple byte comparison, though by default the collation order of the current locale is used. To use the simple comparison logic you can LC_ALL=C sort … as detailed in the FAQ.
GNU Core Utilities Frequently Asked Questions
23 Sort does not sort in normal order!
Why is sort not sorting correctly?
Some years ago at the time of transition to locale aware libc routines this question arose very often. With the passage of time most people have learned about this behavior and workarounds are quite well known. But the question is still raised often. It is most often due to having LANG set to ‘en_US.UTF-8’ set in your user environment. (略)
This locale sorting behavior is configured in your environment. This is due to the fact that you or your vendor have set environment variables that direct the program to use locale specific sorting tables which do not sort as you expect. You or your vendor have probably set environment variables such as LANG, LC_COLLATE, or LC_ALL to ‘en_US.UTF-8’. The locale collating table selected by the locale setting is not part of the GNU program but part of your vendor’s system release.
Decoded: GNU coreutils - MaiZure’s Projects
sortf
sortコマンドと言えば MS-DOS時代に配布されていたフリーウェアの 「sortf」というのをDOSで愛用していて、 ソースコードも配布されていたので X68000用やWin32用にコンパイル (多少の修正をした記憶が)して、 しばらく使っていたのだよなあ… ということを思い出したのでベクターをみたら ソースコードどころか バイナリのアーカイブもなかったでござるの巻 (ソースコードは元々ベクターでは配布されてなかったかも)。
-3**2
まだまだひっぱるよ!😄
ksh
kshにもべき乗演算子があるという話があったけど リリースノートを見ると次のような記述があった。
ast/RELEASE at master · att/ast
01-09-25 +The exponentiation operator ** was added to the shell arithmetic
evaluation. It has higher precedence than * and is left
associative.
2001年9月というのは早いのか遅いのか。
そしてleft ssociative
(左結合)という気になる表現が。
優先順位に関してはIt has higher precedence than *
とはあるけど、
単項マイナスと比較してどうかはわからない。
もうひとつ web archiveにあった /home/gsf/arch/linux.i386-64/man/man1/sh.1 man document にもこのような記述があったが
An arithmetic expression uses the same syntax, precedence, and associativity of expression as the C language. All the C language operators that apply to floating point quantities can be used. In addition, the operator ** can be used for exponentiation. It has higher precedence than multiplication and is left associative. In addition, when the value of an arithmetic variable or sub-expression can be represented as a long integer, all C language integer arithmetic operations can be performed. Variables can be referenced by name within an arithmetic expression without using the parameter expansion syntax. When a variable is referenced, its value is evaluated as an arithmetic expression.
やはり単項マイナスとどちらが優先順位が高いのかはわからず。
ソースコードはgiithubで見つかった。
- ksh93/ksh: ksh 93u+m: current development of KornShell, based off the last stable AT&T release (93u+ 2012-08-01)
- GitHub - ksh93/ksh: ksh 93u+m: current development of KornShell, based off the last stable AT&T release (93u+ 2012-08-01)
- Search ・ A_POW ・ GitHub
ast/streval.h at cc1bca276ca82e6d9687af77531420a3a779a5a8 · att/ast
に
#define A_POW 9
や
#define A_UMINUS 43
というものがあるけれど
優先順位とは関係ない並びのようだ。
コードを読めばわかるのだろうけど 今ちょっとキリョク低下中なので(ry
ast/streval.c at cc1bca276ca82e6d9687af77531420a3a779a5a8 · att/ast
else
{
c = (strval_precedence[op]&PRECMASK);
if(c==MAXPREC || op==A_POW)
c++;
c *= 2;
}
/* from here on c is the new precedence level */
if(lvalue.value && (op!=A_ASSIGN))
のようにべき乗演算子を扱っている部分はある。
const unsigned char strval_precedence[35] =
/* opcode precedence,assignment */
{
/* DEFAULT */ MAXPREC|NOASSIGN,
/* DONE */ 0|NOASSIGN|RASSOC,
/* NEQ */ 10|NOASSIGN,
/* NOT */ MAXPREC|NOASSIGN,
/* MOD */ 14,
/* ANDAND */ 6|NOASSIGN|SEQPOINT,
/* AND */ 9|NOFLOAT,
/* LPAREN */ MAXPREC|NOASSIGN|SEQPOINT,
/* RPAREN */ 1|NOASSIGN|RASSOC|SEQPOINT,
/* POW */ 14|NOASSIGN|RASSOC,
/* TIMES */ 14,
/* PLUSPLUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT,
/* PLUS */ 13,
/* COMMA */ 1|NOASSIGN|SEQPOINT,
/* MINUSMINUS */ 15|NOASSIGN|NOFLOAT|SEQPOINT,
/* MINUS */ 13,
/* DIV */ 14,
/* LSHIFT */ 12|NOFLOAT,
/* LE */ 11|NOASSIGN,
/* LT */ 11|NOASSIGN,
/* EQ */ 10|NOASSIGN,
/* ASSIGNMENT */ 2|RASSOC,
/* COLON */ 0|NOASSIGN,
/* RSHIFT */ 12|NOFLOAT,
/* GE */ 11|NOASSIGN,
/* GT */ 11|NOASSIGN,
/* QCOLON */ 3|NOASSIGN|SEQPOINT,
/* QUEST */ 3|NOASSIGN|SEQPOINT|RASSOC,
/* XOR */ 8|NOFLOAT,
/* OROR */ 5|NOASSIGN|SEQPOINT,
/* OR */ 7|NOFLOAT,
/* DEFAULT */ MAXPREC|NOASSIGN,
/* DEFAULT */ MAXPREC|NOASSIGN,
/* DEFAULT */ MAXPREC|NOASSIGN,
/* DEFAULT */ MAXPREC|NOASSIGN
};
単項マイナスがない? (ここにはでてこないだけで、単項マイナスを表すシンボルはある)
ところでgithubにkshのソースコードが二つ見つかったことに関して こんなもの ksh93/ksh: ksh 93u+m: current development of KornShell, based off the last stable AT&T release (93u+ 2012-08-01) が見つかった。
Between 2017 and 2020 there was an ultimately unsuccessful attempt to breathe new life into the KornShell by extensively refactoring the last unstable AST beta version (93v-). While that ksh2020 effort is now abandoned and still has many critical bugs, it also had a lot of bugs fixed. More importantly, the AST issue tracker now contains a lot of documentation on how to fix those bugs, which made it possible to backport many of them to the last stable release instead. This ksh 93u+m reboot now incorporates many of these bugfixes, plus patches from OpenSUSE, Red Hat, and Solaris, as well as many new fixes from the community (1, 2). Though there are many bugs left to fix, we are confident at this point that 93u+m is already the least buggy version of ksh93 ever released. As of late 2021, distributions such as Debian and Slackware have begun to package it as their default version of ksh93
なるほど。
bash
シェルのべき乗演算子の起源はkshじゃないか という話があったと思うけどbashの NEWS bash/NEWS at master · bminor/bash をみると
This is a terse description of the new features added to bash-3.1 since the release of bash-3.0.
f. The `**’ mathematic exponentiation operator is now right-associative.
This is a terse description of the new features added to bash-2.02 since the release of bash-2.01.1.
i. There is a new `**’ arithmetic operator to do exponentiation.
2.01で導入され(その時点では「左結合」?)、 3.1で「右結合」に改められたとある。
github上のリポジトリにはみあたらないけど Index of /gnu/bash から古いソースコードの CWRU/changelogを探すと
expr.c
- added a `**' binary operator to do exponentiation (2**16 == 65536).
precedence is lower than arithmetic operators, higher than unary
operators (2**16-1 == 65535)
higher than unary operators
と(2**16-1 == 65535)
とあるのがよくわからんのだけど(カッコ内の記述はbinary operatorだよねえ)
実際のコードを見ると
bash 2.02
/*
All arithmetic is done as long integers with no checking for overflow
(though division by 0 is caught and flagged as an error).
The following operators are handled, grouped into a set of levels in
order of decreasing precedence.
"-", "+" [(unary operators)]
"!", "~"
"**" [(exponentiation)]
"*", "/", "%"
"+", "-"
"<<", ">>"
"<=", ">=", "<", ">"
"==", "!="
"&"
"^"
"|"
"&&"
"||"
"expr ? expr : expr"
"=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&=", "^=", "|="
(Note that most of these operators have special meaning to bash, and an
entire expression should be quoted, e.g. "a=$a+1" or "a=a+1" to ensure
that it is passed intact to the evaluator when using `let'. When using
the $[] or $(( )) forms, the text between the `[' and `]' or `((' and `))'
is treated as if in double quotes.)
Sub-expressions within parentheses have a precedence level greater than
all of the above levels and are evaluated first. Within a single prece-
dence group, evaluation is left-to-right, except for the arithmetic
assignment operator (`='), which is evaluated right-to-left (as in C).
The expression evaluator returns the value of the expression (assignment
statements have as a value what is returned by the RHS). The `let'
builtin, on the other hand, returns 0 if the last expression evaluates to
a non-zero, and 1 otherwise.
Implementation is a recursive-descent parser.
Chet Ramey
chet@ins.CWRU.Edu
*/
static long
exppower ()
{
register long val1, val2, c;
val1 = exp1 ();
if (curtok == POWER)
{
readtok ();
val2 = exp1 ();
if (val2 == 0)
return (1L);
for (c = 1; val2--; c *= val1)
;
val1 = c;
}
return (val1);
}
bash 3.1
static intmax_t
exppower ()
{
register intmax_t val1, val2, c;
val1 = exp1 ();
while (curtok == POWER)
{
readtok ();
val2 = exppower (); /* exponentiation is right-associative */
if (val2 == 0)
return (1);
if (val2 < 0)
evalerror (_("exponent less than 0"));
for (c = 1; val2--; c *= val1)
;
val1 = c;
}
return (val1);
}
と、確かに 2.01では左結合で 3.1で右結合になった。
のだけど
Bash (Unix shell) - Wikipedia で各バージョンのリリースの日付を見ると
version | release date |
---|---|
bash-3.1 | 2005-12-08 |
bash-3.0 | 2004-08-03 |
bash-2.05b | 2002-07-17 |
bash-2.05a | 2001-11-16 |
bash-2.05 | 2001-04-09 |
bash-2.04 | 2000-03-21 |
bash-2.03 | 1999-02-19 |
bash-2.02 | 1998-04-18 |
bash-2.01 | 1997-06-05 |
bash-2.0 | 1996-12-31 |
kshより早い?🤔
bug-bash Archives を見てもその時期のものはないようなので、 導入の経緯なんかはわからんかなあ。
bc
ついでにbc v7unix/bc.y at master · v7unix/v7unix も見ておく。
%right '='
%left '+' '-'
%left '*' '/' '%'
%right '^'
%left UMINUS
convert infix notation expression to reverse polish
- 逆ポーランド記法に変換するプログラムを公開します - Qiita
- [意見交換] 可読性を評価してほしいです - Qiita
- Qiita/porandmake.py at 793b0e80753fdb27173dcb387e45b161eacfdf24 ・ ERIN-IARU/Qiita ・ GitHub
こういうのを「車輪の再発明」というんですかね。 自力だけでここまでやったのならそれは素晴らしいと思うけど
>python porandmake.py
式を入力してください
(a+b)(c-d)
[['a', 'b', '+'], ['c', 'd', '-'], '*']
>python porandmake.py
式を入力してください
a+bcd
['a', ['b', ['c', 'd', '*'], '*'], '+']
>python porandmake.py
式を入力してください
a-b-c
['a', ['b', 'c', '-'], '-']
「右結合」しちゃだめでしょ😓
なおコメントにあったスクリプトだと
>python cnv2rpn.py
数式を入力してください: (a+b)/(c-d)
['a', [['b', [')/(', 'c', '*'], '*'], 'd', '-'], '+']`
>python cnv2rpn.py
数式を入力してください: a+b/c/d
['a', ['b', ['c', 'd', '/'], '/'], '+']
右結合の問題は残っているうえに「本家」にはない新しいバグが (読みやすさ云々以前にちゃんと動かないでは…😄)
まあ令和の時代にドラゴンブックでもないだろうけど
辺りを使って書くべきだよねえ。
Newton
本日の「頭クラクラ案件」
- Remembering Apple’s Newton, 30 years on | Hacker News
- Remembering Apple’s Newton, 30 years on | Ars Technica
Thirty years ago, on May 29, 1992, Apple announced its most groundbreaking and revolutionary product yet, the Newton MessagePad.
- Einstein: NewtonOS running on other operating systems | Hacker News
- pguyot/Einstein: NewtonOS running on other operating systems
この種のデバイスに「夢」を見ていたけど iPhoneのようなものになるとは考えていなかった (考えられなかった。当然)なあ…(遠い目)
駅名しりとり
問題発見。 まあ自分で撮影したのをあげてもよかったのだけど。
「東急電車の駅でしりとりをすると、どれだけ続くか」
— ま (@0822ron) May 25, 2022
蒲田→多摩川→若林→新丸子→こどもの国→西太子堂→鵜の木→菊名→長津田→田奈→...
うーん???
はじめの駅をどれにするかで、だいぶ変わっちゃうな。 pic.twitter.com/YpB19BcC1u
こんな感じのやっつけスクリプトで 色々考えてみる (解答ではない)。
require 'pp'
ekimei = DATA.readlines(chomp: true).collect{_1.split(',')[-1]}
puts "group by start char"
g1 = ekimei.group_by{ _1[0] }
g1.sort.each{ puts "#{ _1[0]}, #{_1[1].count}, #{_1[1]}" }
puts "group by end char"
g2 = ekimei.group_by{ _1[-1] }
g2.sort.each{ puts "#{ _1[0]}, #{_1[1].count}, #{_1[1]}" }
h = ekimei.collect{ _1[0] }.uniq.sort
t = ekimei.collect{ _1[-1] }.uniq.sort
puts "start only"
pp h - t
puts "end only"
pp t - h
__END__
青葉台,あおばだい,あおはたい
あざみ野,あざみの,あさみの
池上,いけがみ,いけかみ
池尻大橋,いけじりおおはし,いけしりおおはし
石川台,いしかわだい,いしかわたい
市が尾,いちがお,いちかお
鵜の木,うのき,うのき
江田,えだ,えた
荏原中延,えばらなかのぶ,えはらなかのふ
荏原町,えばらまち,えはらまち
大井町,おおいまち,おおいまち
大岡山,おおおかやま,おおおかやま
大倉山,おおくらやま,おおくらやま
大崎広小路,おおさきひろこうじ,おおさきひろこうし
奥沢,おくさわ,おくさわ
尾山台,おやまだい,おやまたい
恩田,おんだ,おんた
御嶽山,おんたけさん,おんたけさん
学芸大学,がくげいだいがく,かくけいたいかく
梶が谷,かじがや,かしかや
蒲田,かまた,かまた
上野毛,かみのげ,かみのけ
上町,かみまち,かみまち
菊名,きくな,きくな
北千束,きたせんぞく,きたせんそく
久が原,くがはら,くかはら
九品仏,くほんぶつ,くほんふつ
五反田,ごたんだ,こたんた
こどもの国,こどものくに,ことものくに
駒沢大学,こまざわだいがく,こまさわたいかく
鷺沼,さぎぬま,さきぬま
桜新町,さくらしんまち,さくらしんまち
三軒茶屋,さんげんぢゃや,さんけんちゃや
渋谷,しぶや,しふや
下神明,しもしんめい,しもしんめい
下高井戸,しもたかいど,しもたかいと
下丸子,しもまるこ,しもまるこ
自由が丘,じゆうがおか,しゆうかおか
松陰神社前,しょういんじんじゃまえ,しょういんしんしゃまえ
新丸子,しんまるこ,しんまるこ
すずかけ台,すずかけだい,すずかけたい
世田谷,せたがや,せたかや
洗足,せんぞく,せんそく
洗足池,せんぞくいけ,せんそくいけ
代官山,だいかんやま,たいかんやま
高津,たかつ,たかつ
田奈,たな,たな
多摩川,たまがわ,たまかわ
たまプラーザ,たまぷらーざ,たまふらーさ
反町,たんまち,たんまち
千鳥町,ちどりちょう,ちとりちょう
中央林間,ちゅうおうりんかん,ちゅうおうりんかん
つきみ野,つきみの,つきみの
つくし野,つくしの,つくしの
綱島,つなしま,つなしま
田園調布,でんえんちょうふ,てんえんちょうふ
戸越銀座,とごしぎんざ,とごしきんさ
戸越公園,とごしこうえん,とごしこうえん
等々力,とどろき,ととろき
都立大学,とりつだいがく,とりつたいかく
長津田,ながつた,なかつた
中延,なかのぶ,なかのふ
長原,ながはら,なかはら
中目黒,なかめぐろ,なかめくろ
西小山,にしこやま,にしこやま
西太子堂,にしたいしどう,にしたいしとう
沼部,ぬまべ,ぬまへ
白楽,はくらく,はくらく
蓮沼,はすぬま,はすぬま
旗の台,はたのだい,はたのたい
東白楽,ひがしはくらく,ひかしはくらく
日吉,ひよし,ひよし
藤が丘,ふじがおか,ふしかおか
二子新地,ふたこしんち,ふたこしんち
二子玉川,ふたこたまがわ,ふたこたまかわ
不動前,ふどうまえ,ふとうまえ
松原,まつばら,まつはら
溝の口,みぞのくち,みそのくち
緑が丘,みどりがおか,みとりかおか
南町田グランベリーパーク,みなみまちだぐらんべりーぱーく,みなみまちたくらんへりーはーく
宮崎台,みやざきだい,みやさきたい
宮の坂,みやのさか,みやのさか
宮前平,みやまだいら,みやまたいら
妙蓮寺,みょうれんじ,みょうれんし
武蔵小杉,むさしこすぎ,むさしこすき
武蔵小山,むさしこやま,むさしこやま
武蔵新田,むさしにった,むさしにった
目黒,めぐろ,めくろ
元住吉,もとすみよし,もとすみよし
矢口渡,やぐちのわたし,やくちのわたし
山下,やました,やました
祐天寺,ゆうてんじ,ゆうてんし
雪が谷大塚,ゆきがやおおつか,ゆきかやおおつか
用賀,ようが,ようか
横浜,よこはま,よこはま
若林,わかばやし,わかはやし
group by start char
あ, 2, ["あおはたい", "あさみの"]
い, 4, ["いけかみ", "いけしりおおはし", "いしかわたい", "いちかお"]
う, 1, ["うのき"]
え, 3, ["えた", "えはらなかのふ", "えはらまち"]
お, 8, ["おおいまち", "おおおかやま", "おおくらやま", "おおさきひろこうし", "おくさわ", "おやまたい", "おんた", "おんたけさん"]
か, 5, ["かくけいたいかく", "かしかや", "かまた", "かみのけ", "かみまち"]
き, 2, ["きくな", "きたせんそく"]
く, 2, ["くかはら", "くほんふつ"]
こ, 3, ["こたんた", "ことものくに", "こまさわたいかく"]
さ, 3, ["さきぬま", "さくらしんまち", "さんけんちゃや"]
し, 7, ["しふや", "しもしんめい", "しもたかいと", "しもまるこ", "しゆうかおか", "しょういんしんしゃまえ", "しんまるこ"]
す, 1, ["すずかけたい"]
せ, 3, ["せたかや", "せんそく", "せんそくいけ"]
た, 6, ["たいかんやま", "たかつ", "たな", "たまかわ", "たまふらーさ", "たんまち"]
ち, 2, ["ちとりちょう", "ちゅうおうりんかん"]
つ, 3, ["つきみの", "つくしの", "つなしま"]
て, 1, ["てんえんちょうふ"]
と, 4, ["とごしきんさ", "とごしこうえん", "ととろき", "とりつたいかく"]
な, 4, ["なかつた", "なかのふ", "なかはら", "なかめくろ"]
に, 2, ["にしこやま", "にしたいしとう"]
ぬ, 1, ["ぬまへ"]
は, 3, ["はくらく", "はすぬま", "はたのたい"]
ひ, 2, ["ひかしはくらく", "ひよし"]
ふ, 4, ["ふしかおか", "ふたこしんち", "ふたこたまかわ", "ふとうまえ"]
ま, 1, ["まつはら"]
み, 7, ["みそのくち", "みとりかおか", "みなみまちたくらんへりーはーく", "みやさきたい", "みやのさか", "みやまたいら", " みょうれんし"]
む, 3, ["むさしこすき", "むさしこやま", "むさしにった"]
め, 1, ["めくろ"]
も, 1, ["もとすみよし"]
や, 2, ["やくちのわたし", "やました"]
ゆ, 2, ["ゆうてんし", "ゆきかやおおつか"]
よ, 2, ["ようか", "よこはま"]
わ, 1, ["わかはやし"]
group by end char
い, 7, ["あおはたい", "いしかわたい", "おやまたい", "しもしんめい", "すずかけたい", "はたのたい", "みやさきたい"]
う, 2, ["ちとりちょう", "にしたいしとう"]
え, 2, ["しょういんしんしゃまえ", "ふとうまえ"]
お, 1, ["いちかお"]
か, 6, ["しゆうかおか", "ふしかおか", "みとりかおか", "みやのさか", "ゆきかやおおつか", "ようか"]
き, 3, ["うのき", "ととろき", "むさしこすき"]
く, 8, ["かくけいたいかく", "きたせんそく", "こまさわたいかく", "せんそく", "とりつたいかく", "はくらく", "ひかしはくら く", "みなみまちたくらんへりーはーく"]
け, 2, ["かみのけ", "せんそくいけ"]
こ, 2, ["しもまるこ", "しんまるこ"]
さ, 2, ["たまふらーさ", "とごしきんさ"]
し, 8, ["いけしりおおはし", "おおさきひろこうし", "ひよし", "みょうれんし", "もとすみよし", "やくちのわたし", "ゆうてん し", "わかはやし"]
た, 7, ["えた", "おんた", "かまた", "こたんた", "なかつた", "むさしにった", "やました"]
ち, 7, ["えはらまち", "おおいまち", "かみまち", "さくらしんまち", "たんまち", "ふたこしんち", "みそのくち"]
つ, 2, ["くほんふつ", "たかつ"]
と, 1, ["しもたかいと"]
な, 2, ["きくな", "たな"]
に, 1, ["ことものくに"]
の, 3, ["あさみの", "つきみの", "つくしの"]
ふ, 3, ["えはらなかのふ", "てんえんちょうふ", "なかのふ"]
へ, 1, ["ぬまへ"]
ま, 9, ["おおおかやま", "おおくらやま", "さきぬま", "たいかんやま", "つなしま", "にしこやま", "はすぬま", "むさしこやま", "よこはま"]
み, 1, ["いけかみ"]
や, 4, ["かしかや", "さんけんちゃや", "しふや", "せたかや"]
ら, 4, ["くかはら", "なかはら", "まつはら", "みやまたいら"]
ろ, 2, ["なかめくろ", "めくろ"]
わ, 3, ["おくさわ", "たまかわ", "ふたこたまかわ"]
ん, 3, ["おんたけさん", "ちゅうおうりんかん", "とごしこうえん"]
start only
["あ", "す", "せ", "て", "ぬ", "は", "ひ", "む", "め", "も", "ゆ", "よ"]
end only
["け", "の", "へ", "ら", "ろ", "ん"]
「ん」のほかにも行き止まりになる文字があったり それから始まる駅名はあっても それで終わる駅名はない文字もあると。
「あざみ野」とか「沼部」、「目黒」、「中目黒」なんかを選ぶと即座にそこで終わっちゃうのか😄