#line_sushi をほどく

JJUG CCC 2017 TOKYO で LINE からこんな問題を出されました:

![aaa.jpg](https://pbs.twimg.com/media/DAQ0bT6VoAEI7pJ.jpg)

```java:#line_sushi
 IntStream.range(0,4)
    .mapToObj(idx -> new int[]{"SUSI". charAt(idx),
                               "LINE". charAt(idx)})
    .map(p -> p[0]*p[0]*311-p[0]*49_578+p[1]*1320+1_876_615)
    .map(value -> (char) (value / 60))
    .forEach(System.out::print);
```

# 追いかけてみる

```java:#line_sushi
 IntStream.range(0,4)
 // [ 0, 1, 2, 3 ]
    .mapToObj(idx -> new int[]{"SUSI". charAt(idx),
                               "LINE". charAt(idx)})
 // [ ['S','L'], ['U','I'], ['S','N'], ['I','E'] ] 
    .map(p -> p[0]*p[0]*311-p[0]*49_578+p[1]*1320+1_876_615)
 //   [ 'S'*'S'*311-'S'*49578 + 'L'*1320 + 1876615,
 //     'U'*'U'*311-'U'*49578 + 'I'*1320 + 1876615,
 //     'S'*'S'*311-'S'*49578 + 'N'*1320 + 1876615,
 //     'I'*'I'*311-'I'*49578 + 'E'*1320 + 1876615 ]
 // = [  83* 83*311- 83*49578 +  76*1320 + 1876615,
 //      85* 85*311- 85*49578 +  73*1320 + 1876615,
 //      83* 83*311- 83*49578 +  78*1320 + 1876615,
 //      73* 73*311- 73*49578 +  69*1320 + 1876615 )
 // = [  4440, 
 //      5820,
 //      7080,
 //      5820 )
    .map(value -> (char) (value / 60))
//    [ 74,  97, 118,  97 ]
    .forEach(System.out::print);
```

# どうやってつくるの?

[ [83, 76], [85, 73], [83, 78], [73, 69] ] -> [ 74, 97, 118, 97 ]
という変換をする関数をつくればいい。

[![image.png](https://qiita-image-store.s3.amazonaws.com/0/61810/141d8904-0459-621e-cea4-6e4647e715f5.png)](https://www.google.co.jp/search?q=311x^2-49578x%2B1320y%2B1876615)

制約が4つあるので、4変数の関数になるはず。
ゴールを適当に $ax^2 + bx + cy + d$ という形になることをめざして、

$83^2a + 83b + 76c + d = 74$
$85^2a + 85b + 73c + d = 97$ 
$83^2a + 83b + 78c + d = 118$
$73^2a + 73b + 69c + d = 97$

これを $a$ $b$ $c$ $d$ について解いたら、こうなった。[^FN]

[^FN]: 計算してないよ!

```math
a=\frac{311}{60} \\
b=\frac{49578}{60} \\
c=\frac{1320}{60} \\
d=\frac{1876615}{60}
```

# こたえあわせ

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">JJUG CCC 2017 Spring で寿司スポンサーをした際に出していた問題について解説エントリを公開いたしました。ゆらゆらするグラフと共に是非ご覧ください。ゆらゆらゆら… <a href="https://twitter.com/hashtag/line_sushi?src=hash">#line_sushi</a> <a href="https://engineering.linecorp.com/ja/blog/detail/165">https://engineering.linecorp.com/ja/blog/detail/165</a></p>&mdash; LINE_DEV (@LINE_DEV) <a href="https://twitter.com/LINE_DEV/status/878110916721627136">2017年6月23日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

この記事では時間の関係[^duetime]で端折った「制約が4つあるので、4変数の関数になるはず。ゴールを適当に $ax^2 + bx + cy + d$ という形になることをめざして」という部分など、ていねいに解説されています。

# ……続き。

こんな感じでTwitterに書いたら、LINEからこんな連絡がきました!! お食事券をいただきました! LINEさんありがとう!!

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">Javaだ…… <a href="https://twitter.com/hashtag/jjug_ccc?src=hash">#jjug_ccc</a> <a href="https://twitter.com/hashtag/line_sushi?src=hash">#line_sushi</a>  <a href="http://qiita.com/matobaa/items/c8a30d15c4a5227fc798">http://qiita.com/matobaa/items/c8a30d15c4a5227fc798</a></p>&mdash; matobaa (@matobaa) <a href="https://twitter.com/matobaa/status/865937755305418752">2017年5月20日</a></blockquote>

![linesushi.png](https://qiita-image-store.s3.amazonaws.com/0/61810/4999a6fd-ce0e-5611-d5bb-4943aa90b5c0.png)

![IMG_20171017_155553.jpg](https://qiita-image-store.s3.amazonaws.com/0/61810/afd6c80a-33a9-a6d2-f14e-0292c583b74a.jpeg)
ごちそうさまでした!!

[^duetime]: 応募の締め切りは当日0時までだったのです

----