[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 01/09 01:44 / Filesize : 338 KB / Number-of Response : 1032
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

プログラミングのお題スレ Part18



1 名前:デフォルトの名無しさん mailto:sage [2020/07/14(火) 13:53:46 ID:jW5p6F/e.net]
プログラミングのお題スレです。

【出題と回答例】
1 名前:デフォルトの名無しさん
  お題:お題本文

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文
  結果がある場合はそれも

【ソースコードが長くなったら】 (オンラインでコードを実行できる)
https://ideone.com/
codepad.org/
compileonline.com/
rextester.com/runcode
https://runnable.com/
https://code.hackerearth.com/
melpon.org/wandbox
https://paiza.io/

宿題は宿題スレがあるのでそちらへ。

※前スレ
プログラミングのお題スレ Part17
https://mevius.5ch.net/test/read.cgi/tech/1584031367/

237 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 00:04:29 ID:b55CcwAR.net]
JavaScript では、Lodash を使うけど、
やっぱり、Ruby の方が、メソッドチェーンできるから良い

Lodash ではたまに「インスタンス.メソッド」の形にならない関数がある。
関数(オブジェクト)の形式

そこで、メソッドチェーンが途切れて、配列が実体化されてしまうから、
サイズと大きいと、ヤバイ

238 名前:デフォルトの名無しさん [2020/08/08(土) 00:46:24.94 ID:R/FWJxxqi]
>>226 C++
https://wandbox.org/permlink/WHokmEEX0tp8dRgo

C++で無理やりメソッドチェーンしてみた

239 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:24:36.17 ID:u/td9dv4.net]
lodash破壊的変更の関数あるの地味に謎だよな
一応 lodash/fpもあるけど

240 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 07:26:45.92 ID:u/td9dv4.net]
いや _.chainの話か
一瞬非推奨の流れ来たときから使ってないわ
メソッドチェーン嫌いではないけど

241 名前:デフォルトの名無しさん [2020/08/08(土) 09:18:46 ID:b55CcwAR.net]
>>226
Elixir

input_str = "D a B c d c C A E c e B b"

list = input_str
|> String.split # 文字列を空白で分割して、配列化する
|> Enum.group_by( &String.downcase/1 ) # 小文字へ変換して、グループ化する
|> Map.values # 値を取り出す
|> Enum.map( fn list -> Enum.join( list, " " ) end ) # 各要素を空白でつなげて、1つの文字列にする
|> Enum.map( fn str -> "(" <> str <> ")" end ) # 文字列を、( ) で囲む

# IO.inspect list

Enum.join( list, " " ) # 各要素を空白でつなげて、1つの文字列にする
|> IO.puts

242 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 14:04:33 ID:JvTsLjL+.net]
>>226
Python3
https://ideone.com/6VvEbi

全然短くならなかったんだけど皆どういう脳みそしてるの

243 名前:デフォルトの名無しさん [2020/08/08(土) 14:58:00 ID:gFRxrH0y.net]
>>226
perl

$input = "D a B c d c C A E c e B b";
map{push @{$h{uc $_}}, $_}(split / /, $input);
print map{map{"(".(join" ", @$_).")"}$h{$_}} sort{uc $a cmp uc $b} keys %h;


>>238
オブ脳ならぬラムダ脳なんだろうなぁ
同値でグループ化、代表元でソート、出力、これを関数でやってる

それかワンライナーへの偏執的な愛

244 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 15:53:05 ID:xsg1wzC9.net]
>>226 Ruby

gets.split.group_by(&:upcase).sort.map{|_,v|$><<"(#{v*' '}) "}

245 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 16:11:32.49 ID:yUCBpeXj.net]
>>238
一般論としてデータの処理と最後の文字列の組み立てを一緒にやらない方がいい
今どきPC上ならメモリーは潤沢にあるので
・グルーピングの処理してから
・各グループを文字列化
・さらにその文字列を順次出力
とした方がわかりやすいと思う
https://ideone.com/Tsio0O



246 名前:デフォルトの名無しさん [2020/08/08(土) 17:07:51.92 ID:HH2BebFt.net]
>>238
Pythonだとどうしても短くはならないな。
https://ideone.com/iFc6eL
groupbyのところは、defaultdictで書く方法もあるけど大差なし。

247 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:09:30.55 ID:JvTsLjL+.net]
>>239
Rubyの人もワンライナーだな
Rubyってショートコーディングに向いてるのかな?

>>241,238
なるほど

248 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:20:24 ID:bf+w2Xl6.net]
code golfなら基本はperlで、次点がRubyじゃないですかね

249 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 21:56:24 ID:JvTsLjL+.net]
>>244
そういうものなのね

250 名前:231 mailto:sage [2020/08/08(土) 22:49:25 ID:b55CcwAR.net]
関数型・メソッドチェーンなら、Ruby・Elixir。
長く、チェーンできるから

Elixir では関数の第一引数を、前のチェーンからの戻り値として渡せる

str = "a b c"

# 文字列を空白で分割して、配列化する
IO.inspect String.split( str )

str
|> String.split
|> IO.inspect

出力は、どちらも
["a", "b", "c"]

251 名前:231 mailto:sage [2020/08/08(土) 22:54:29 ID:b55CcwAR.net]
基本的に、Ruby・Elixir みたいに、
メソッドチェーンで、英語のように、左から右へ読めないとダメ

Python の内包表記みたいなのは、可読性が悪い

252 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 23:09:35.53 ID:n6UBlQy6.net]
ざっくりとした見た目しか気にしないのでパイプライン演算子と区別がつかないrubyガイジなのであったw

253 名前:デフォルトの名無しさん [2020/08/08(土) 23:14:07.63 ID:ifN2bgU4.net]
>>185
Java
https://paiza.io/projects/__QcFHuBny33chXSMMTA4Q

254 名前:デフォルトの名無しさん [2020/08/08(土) 23:32:15 ID:ifN2bgU4.net]
>>226
Java
https://paiza.io/projects/20JVV_t6hmPUha0B9AuKOA

255 名前:デフォルトの名無しさん [2020/08/09(日) 00:15:33.89 ID:cPfQFxYQ8]
Ruby上達したら便利そう
理想的なスクリプト言語だな



256 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:17:54.90 ID:/K790vfJ.net]
javaでもStream使うと意外と少なくかけるんだな
utilが充実してるな

257 名前:デフォルトの名無しさん [2020/08/09(日) 00:24:15.31 ID:cPfQFxYQ8]
これとかすげえ
https://www.youtube.com/watch?v=pgAHW8OpcTY

258 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 00:41:46.15 ID:uywZ9h5A.net]
>>185
Python3
https://ideone.com/1aordC

259 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 02:47:46 ID:Mt0Kh35r.net]
>>226
c#
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var input = "D a B c d c C A E c e B b";

foreach (var itm in input.Split(" ").GroupBy(p => p.ToUpper()).OrderBy(p => p.Key))
{
Console.Write("(" + string.Join(" ", itm) + ") ");
}


260 名前: }
}
[]
[ここ壊れてます]

261 名前:デフォルトの名無しさん [2020/08/09(日) 04:58:28 ID:bQgrv4ZF.net]
>>226
Kotlin
https://paiza.io/projects/zR3XGW4DaUAMXfqNq1oZ8A

262 名前:デフォルトの名無しさん [2020/08/09(日) 16:07:42 ID:HZ7sqguG.net]
お題
文字列abcdeを右に2つ回転するとdeabcとなる
文字列abcdeを左に2つ回転するとcdeabとなる

2つの文字列を入力として受け取り
2つの文字列が一致するか、または、文字列を回転させて一致した場合はtrueを返してください
さもなくばfalseを返してください

入力: abcde deabc
出力: true

入力: abcde cdeba
出力: false

263 名前:デフォルトの名無しさん [2020/08/09(日) 16:42:31.20 ID:/K790vfJ.net]
>>257 js

const isRotateStr = (a, b) => (a + a).indexOf(b) != -1

console.log(isRotateStr("abcde", "deabc"))
// true

console.log(isRotateStr("abcde", "cdeba"))
// false

264 名前:デフォルトの名無しさん [2020/08/09(日) 16:56:20.10 ID:DzMx1xPb.net]
問題として狙ってたかしらんけど、いきなり簡単な解法来ちゃったな。

265 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 16:59:23.64 ID:Uo9rXbdx.net]
aaとaaaを比較したらtrueになっちゃうね
文字サイズを最初にチェックすればいいかな?



266 名前:253 mailto:sage [2020/08/09(日) 19:01:45.47 ID:UiQUiAYf.net]
>>226 Perl5

push(@{$h{uc$_}}, $_) for qw{D a B c d c C A E c e B b};
print map{"(@{$h{$_}}) "} sort keys %h;

実行結果

~ $ perl 18_221_NCS_sort_grp.pl
(a A) (B B b) (c c C c) (D d) (E e)

267 名前:253 mailto:sage [2020/08/09(日) 19:17:23 ID:A1LNtpwx.net]
>>257 Perl5

use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 say "出力 ", "$a$a" =~ /$b/ ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false

268 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 20:09:27.60 ID:sb6ynJ/q.net]
Jニキも披露してくれよ

269 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:00:05.82 ID:BOQzPYI8.net]
>>226 octave
https://ideone.com/qHkxnH

>>257 octave
https://ideone.com/oKqnrA

270 名前:253 mailto:sage [2020/08/09(日) 22:27:07 ID:iNMqPGBy.net]
>>261 それだと「文字列を回転させて一致」のみならず「含まれている」場合もtrueになってしまうので修正

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = "$a$a" =~ /^(.*)($b)(.*)$/;
 say "出力 ", (@a and "$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

実行結果
~ $ perl 18_249_strot_cmp.pl
The signatures feature is experimental at 18_249_strot_cmp.pl line 2.
入力 abcde deabc
出力 true
入力 abcde cdeba
出力 false
入力 aaaaa aaa
出力 false

271 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 22:40:05 ID:/K790vfJ.net]
octave文法好みだけど結構古い言語なんだな

272 名前:253 mailto:sage [2020/08/09(日) 23:21:31.30 ID:dFp53gtH.net]
>>226 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  if u in d: d[u] += ' ' + c
  else: d[u] = c
ks = sorted(d.keys())
print(' '.join(map(lambda x: '(%s)' % d[x], ks)))

実行結果
~ $ py 18_221_NCS_sort_grp.py
(a A) (B B b) (c c C c) (D d) (E e)

273 名前:デフォルトの名無しさん [2020/08/09(日) 23:56:04.43 ID:DzMx1xPb.net]
Perlだとこの程度でも正規表現使わないといかんのか?

274 名前:253 mailto:sage [2020/08/10(月) 00:02:07 ID:5Aj+dIHX.net]
>>267 を少し簡略化

>>226 Python3

s = "D a B c d c C A E c e B b".split();
d = {}
for c in s:
  u = c.upper()
  d[u] = d[u]+' '+c if u in d else c
print(' '.join(map(lambda x: '(%s)' % d[x], sorted(d.keys()) )))

275 名前:253 mailto:sage [2020/08/10(月) 00:03:02 ID:5Aj+dIHX.net]
>>268
substrとかでも書ける



276 名前:253 mailto:sage [2020/08/10(月) 01:07:06.98 ID:mTkq56mc.net]
>>268
>>265は一致する場合に対応するようあせって書いた面があり
正規表現を使うのはやりすぎ感があったのは確かなので
顕に正規表現を使わずに書きを考えてみた。
もっとも簡素な書き方として思いついたのがsplitで三分割して
前後の余った文字列を連結したらそれも一致するかなので

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split "$b", "$a$a", 3;
 say "出力 ", ("$a[2]$a[0]" eq $b) ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

…でもsplitも実は正規表現で分離する機能を持つので、起きていることは実は>>265と一緒なんだよね

277 名前:253 mailto:sage [2020/08/10(月) 01:18:32.03 ID:mTkq56mc.net]
>>271 ゴメン、$a[2]$a[0]はbug、訂正

>>257 Perl5
use feature qw{signatures say};
sub strot_cmp($a, $b) {
 say "入力 $a $b";
 @a = split $b, "$a$a", 3;
 say "出力 ", ("$a[1]$a[0]") eq $b ? 'true' : 'false';
}
strot_cmp qw{abcde deabc};
strot_cmp qw{abcde cdeba};
strot_cmp qw{aaaaa aaa};

278 名前:253 mailto:sage [2020/08/10(月) 01:58:56.02 ID:5YDTUTIu.net]
>>272 ゴメン
× @a = split $b, "$a$a", 3;
○ @a = split $b, "$a$a", 2;

279 名前: mailto:sage [2020/08/10(月) 02:53:12.35 ID:JYoLJZbs.net]
>>257 C
https://mevius.5ch.net/test/read.cgi/tech/1434079972/68

280 名前:デフォルトの名無しさん [2020/08/10(月) 05:44:26 ID:SKFyjjt9.net]
お題:
Brainfuck実行環境を作成し,以下のhello.bfを読み込み実行してください

入力: https://github.com/pablojorge/brainfuck/blob/master/programs/hello.bf
出力: "Hello World!"

281 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:19.32 ID:SwBLGnEH.net]
>>275 Ruby

require 'open-uri'
str = open('https://raw.githubusercontent.com/pablojorge/brainfuck/master/programs/hello.bf').read

M = 256
i = p = s = 0
h = Hash.new(0)
m = [0] * M
while i < str.length
  case str[i]
  when ?+ then m[p] += 1
  when ?- then m[p] -= 1
  when ?[ then h[s += 1] = i
  when ?] then m[p].zero? ? s -= 1 : i = h[s]
  when ?> then p += 1
  when ?< then p -= 1
  when ?. then $><<m[p].chr
  when ?, then m[p] += $<.getc.ord
  end
  i += 1
end

# => Hello World!

282 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 08:49:26.47 ID:OSJh6/O/.net]
>>275 Ruby
https://ideone.com/A0JIsc

283 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:10.24 ID:Z7zFlWuQ.net]
>>257
Kotlin

簡単なやり方は出尽くしたのであえてグルグル回すだけのIteratorを作成した。

https://paiza.io/projects/TxupVLPTStBv7o1MiTuDEQ

284 名前:デフォルトの名無しさん [2020/08/10(月) 17:10:16.38 ID:SKFyjjt9.net]
>>275 C++
https://ideone.com/Lpmngq

285 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:01:14 ID:Z7zFlWuQ.net]
>>275
Kotlin

とりあえず簡単そうだったので Kotlin へのコンバータを作った(コンバータなのでKotlinのソースを出力するだけ)。
実行したい場合はその出力を Kotlin コンパイラに読ませてコンパイルしてから Java VM で動かす必要がある。

https://paiza.io/projects/q8vkgGoAei9W2gfLA4xP4Q

こちらの Linux 環境でコマンドラインの kotlinc を使ってやった時はこうやった。(BF2Kotlin.kt がコンバータ。hello.bf はダウンロードしたプログラム)

$ kotlinc BF2Kotlin.kt
$ kotlin BF2KotlinKt < hello.bf > hello.kt
$ kotlinc hello.kt
$ kotlin HelloKt
Hello World!



286 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 18:43:36.36 ID:TsKVv45J.net]
>>257
Python3
https://ideone.com/DvaLMh

287 名前:デフォルトの名無しさん [2020/08/10(月) 21:10:04.86 ID:EfqLUS40.net]
>>257 Python3
def f(a, b): return len(a) == len(b) and a in b + b

288 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 22:32:27 ID:tDeKMBiv.net]
>>257 c
https://ideone.com/BcT5su

289 名前:デフォルトの名無しさん [2020/08/10(月) 23:41:40.77 ID:SKFyjjt9.net]
>>257 C++
https://ideone.com/p6Y7W4

290 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:46:58.70 ID:lJp+wmfa.net]
bfってループの入れ子できたっけ?

291 名前:デフォルトの名無しさん mailto:sage [2020/08/10(月) 23:47:11.22 ID:SwBLGnEH.net]
>>285
できる

292 名前:272 mailto:sage [2020/08/11(火) 01:47:49 ID:RwCZynCZ.net]
>>275
Kotlin

これはインタープリタ版。

https://paiza.io/projects/J-pCgNSAEcATixwsNPmyGQ

293 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 01:50:50.24 ID:RwCZynCZ.net]
>>285
知らんけど >>287 は出来るように作った。
>>280 のやつはコンバータだが Kotlin が出来るので出来る。(というか出来ないように作る方が面倒かな?)

294 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 07:40:40.35 ID:RSsrE9PW.net]
>>257
>>281をリファクタリング
https://ideone.com/gR6WqL

295 名前:デフォルトの名無しさん [2020/08/11(火) 14:40:27.33 ID:psN1NwFJ.net]
こんなに暑いと座禅プログラムで涼みたい。



296 名前:デフォルトの名無しさん [2020/08/12(水) 10:55:20.81 ID:WiVroiaz.net]
警策を上から振り下ろす動作の機械を作り、そこにマイコンを接続。更に行ったり
来たりするルンバのようなものの上にそれを乗せ、そこにもマイコンを接続。
そのマイコンのコントロールプログラムを作成。

297 名前:デフォルトの名無しさん [2020/08/12(水) 11:07:50.98 ID:WiVroiaz.net]
既にこんなの作ってる人が居た。

座禅で動いたら棒で叩かれるやつを全自動化する
https://dailyportalz.jp/kiji/zazen-bou-automation

298 名前:デフォルトの名無しさん [2020/08/12(水) 16:50:07.72 ID:xjprAYba.net]
令和のコペルニクス
https://youtu.be/7DbdPKWhrpY

299 名前:デフォルトの名無しさん [2020/08/12(水) 19:58:36.03 ID:j5y8ZKQl.net]
お題
Brainfuckのの'+','-','.'の 3つの命令のみで
特定の文字列を表示するBrainfucの
ソースコードを生成するプログラム。

300 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 20:07:13.01 ID:kGuev0jH.net]
>>294 Ruby

puts "Hello, World!\n".codepoints.unshift(0).each_cons(2).map{|a, b| '%s.' % ((b > a ? ?+ : ?-) * (b - a).abs)}*''

# =>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.+++++++..+++.[略]

301 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 23:55:21 ID:WiVroiaz.net]
差分出すっていうと ADPCM の圧縮を思い出すな。

302 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:08:54.66 ID:TUx4JMNp.net]
>>294
Perl5

プログラムの構造は >>295 と同じだがワンライナー。
行単位で標準入力から入力して標準出力に出力する。入力の最後の改行は削除している。行ごとに直前の文字は0にリセットしている。
見易くするために '.' の後には改行を出力している。

以下は Linux のシェルのコマンドラインで実行して abc と Hello, world. を入力した時のコピペ。

$ perl -ne 'BEGIN{$o=0}chomp;for(split //){$c=ord($_);print((($o < $c ? "+" : "-") x abs($o - $c)) . ".\n");$o=$c}$o=0'
abc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+.
+.
Hello, world.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
+++++++++++++++++++++++++++++.
+++++++.
.
+++.
-------------------------------------------------------------------.
------------.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
--------.
+++.
------.
--------.
------------------------------------------------------.
$

303 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 01:49:54 ID:CZu90IWX.net]
>>294 Ruby
"Hello World!\n".codepoints.inject(''){|r,c| r << '+' * c + '.[-]' }

304 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 03:32:09 ID:CZu90IWX.net]
>>294 Ruby
"Hello World!\n".codepoints.map{|c| '+' * c + '.' }.join( '[-]' )

305 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 05:51:07.18 ID:CZu90IWX.net]
>>294
>>298,299 は出題条件の「'+','-','.'の 3つの命令のみ」を忘れてましたご免なさい



306 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 06:48:39.25 ID:9ZM4Lmsz.net]
>>294 Ruby

gets.each_char{|c|d=$.-$.=c.ord;$><<(d<0? ?+*-d:?-*d)+?.}

307 名前:デフォルトの名無しさん [2020/08/13(木) 12:37:03.85 ID:8zEuDtsy.net]
なるほどbrainfuckでは[-]で現在指してるメモリの値を0クリアできるのか

308 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 01:20:11 ID:CuxcYYZ5.net]
お題:変数a, b, cを32ビット符号付き整数の最大値で初期化、または代入せよ。

octave
https://ideone.com/62dSzC

ada95
https://ideone.com/26IGLZ

309 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 03:17:07 ID:cCFmHkiX.net]
>>303 Ruby
# 初期化だけ
a = b = c = 2**31 - 1

# 初期化して表示
p *(a,b,c = [2**31-1] * 3) #=> 2147483647\n2147483647\n2147483647\n

310 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:01:38 ID:cCFmHkiX.net]
>>303 Ruby
お題とずれるけど INT32_MAX, INT32_MIN を普通の演算以外で作ってみた

# 定数 0,1 から INT32_MAX, INT32_MIN
[~0].pack('l').unpack('L').first >> 1 #=> 2147483647
[~0].pack('l').unpack('N').first >> 1 #=> -2147483648

# 定数 1 から INT32_MAX, INT32_MIN
[~1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> 2147483647
[1].pack('l<').unpack('b*').pack('B*').unpack('l>').first #=> -2147483648

311 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:01:01.07 ID:sgFs/qSh.net]
>>303 JavaScript
a=b=c=-1>>>1

312 名前:デフォルトの名無しさん [2020/08/14(金) 08:17:19.00 ID:jifd8sPx.net]
>>303 C++
int32_t max = 1 << 31;
int32_t min = ~max;

313 名前:デフォルトの名無しさん [2020/08/14(金) 08:18:37.41 ID:jifd8sPx.net]
あ maxとminが逆だった

314 名前:デフォルトの名無しさん [2020/08/14(金) 08:20:39.60 ID:jifd8sPx.net]
しかもお題と関係ない スマソ

315 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:21:04.21 ID:hpI++Bi7.net]
>>303 Python では整数に制限がないからnumpyで、

import numpy as np
a=b=c=np.iinfo(np.int32).max



316 名前:デフォルトの名無しさん [2020/08/14(金) 08:38:19 ID:jifd8sPx.net]
>>303 C++(訂正)
#include <iostream>
#include <tuple>

int main() {
int32_t max = ~(1 << 31);
const auto [a, b, c] = [&]() { return std::tie(max, max, max); }();
std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;
}

317 名前:デフォルトの名無しさん [2020/08/14(金) 09:05:58 ID:jifd8sPx.net]
const auto [a, b, c] = std::tie(max, max, max);
これだけでよかったorz

318 名前:デフォルトの名無しさん [2020/08/14(金) 14:02:54 ID:9qHjnK+i.net]
お題:任意文字列を含むビットコインアドレスを生成するスクリプト

BitCoinDescriptionAddress

1BitCoinDescriptionAddressadTvGDH

319 名前:デフォルトの名無しさん [2020/08/15(土) 16:58:24 ID:gFfdk9Ij.net]
>>303
Kotlin 及び Kotlin script

普通にただ Int.MAX_VALUE を代入するだけだとつまらないので List 使ってまとめて代入。

val (a, b, c) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE)

この形式は実際には a に List のインスタンスの component1() メソッドを実行して結果を代入、
b に component2() の結果を代入、c に component3() の結果を代入という具合に componentN()
のメソッドを呼び出しているだけだ。(コンパイラが自動でそういう風にしてくれる。但し定数の代入
だったら最終的にはうまい事最適化してくれてただの値の代入になっているんじゃないかと思う)。

それで、List インターフェースには component5() までしかないのでそのままだと 5 個の変数にしか
代入できない。しかし自分で下記のように component6() という拡張関数を作れば 6 個目の変数への
代入ができるようになる。

fun <T> List<T>.component6() = get(5)

val (a, b, c, d, e, f) = listOf(Int.MAX_VALUE, Int.MAX_VALUE, Int.MAX_VALUE, 1, 2, 3)

これで f には 3 が代入される。

まあしかしこのような形式でまとめて複数の変数を初期化をするのは変数が多くなればなるほど
見辛くなってどれがどれに代入されるか分かり辛くなるのであまりお勧めする気は起きない。

320 名前:295 mailto:sage [2020/08/15(土) 17:28:56 ID:nnj+MvqH.net]
>>303 octave
https://ideone.com/FgfsWd
単に[a, b, c] = deal(intmax)でよかった

321 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 17:57:15 ID:uqmyrozg.net]
お題
長さNの順列を全列挙してください

入力: N
出力: N!行の1からNの整数を用いた順列


入力: 3
出力:
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1

322 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:04:12.38 ID:WnA8LB9O.net]
>>316 Ruby

[*1..gets.to_i].permutation{|a| puts a*' '}

323 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 18:07:06.59 ID:nnj+MvqH.net]
>>316 octave
https://ideone.com/dC1LGs
f = @(n) perms(1:n);
f(3)

324 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 19:24:16.43 ID:4GsEJ4Sf.net]
お題
HTMLドキュメントをwebブラウアザ上に表示するプログラムを作りなさい。

内容は、html、head、meta、title、body、h1 を含み、
UTF-8で表示するものとする、

Hello World!

325 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:07:59.51 ID:nR02Shr3.net]
お題: 整数の0,1を真偽値のfalse,trueに変換しなさい



326 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:22:45.39 ID:BUqVCKAW.net]
>>319 Ruby
require 'webrick'

BrowserPath = 'C:/Program Files/Mozilla Firefox/firefox.exe'

srv = WEBrick::HTTPServer.new( {BindAddress: '127.0.0.1', Port: 55080} )
trap("INT"){ srv.shutdown }

srv.mount_proc('/') do |req, res|
html = <<_EOT_
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Title</title></head>
<body>
<h1>Hello World!</h1>#{Time.now.strftime('%y/%m/%d %T')}<br></body></html>
_EOT_
res.body = html.encode( Encoding::UTF_8 )
res['Content-Type'] = 'text/html'
end

Thread.new { sleep 1; system( %Q{"#{BrowserPath}" 127.0.0.1:55080/} ) }

srv.start

327 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:34:31.85 ID:BUqVCKAW.net]
>>320 Ruby
def i2b( x )
if x.is_a?( Integer )
return false if x == 0
return true if x == 1
end
x
end

[ 'foo', 7, 1, 1.0, [], true, false, 0, {} ].each{|x|
puts "%5p : %5p" % [x, i2b( x )]
}
# =>
"foo" : "foo"
7 : 7
1 : true
1.0 : 1.0
[] : []
true : true
false : false
0 : false
0 : false
{} : {}

328 名前:314 mailto:sage [2020/08/15(土) 20:37:12.09 ID:BUqVCKAW.net]
>>322
0 : false
が一行余分に付いてしまった

329 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:49:55 ID:WnA8LB9O.net]
>>320 Ruby

n.nonzero?

330 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 20:59:34.51 ID:nnj+MvqH.net]
>>320 ocaml
https://ideone.com/nSKbMo
let f = function 0 -> false | 1 -> true
let () = Printf.printf "%B %B" (f 0) (f 1)

>>320 c++
https://ideone.com/Dm4QrP
#include <iostream>
#include <iomanip>
int main() {


331 名前:std::cout << std::boolalpha << 0 << !!0 << 1 << !!1 << std::endl;
return 0;
}
[]
[ここ壊れてます]

332 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 21:22:21.80 ID:v9cGseLQ.net]
>>320
0, 1以外の時の挙動が書いてない
単体テストできねーだろ、やり直し!

333 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 23:19:07 ID:gFfdk9Ij.net]
>>320
Kotlin 及び Kotlin Script

まず、こういう拡張関数を定義しておく。

fun Int.toBoolean() = this != 0

この後は Int 型のインスタンスに対して .toBoolean() で 0 なら false, 0 以外なら true が返る。


0.toBoolean() は false になる。
1.toBoolean() は true になる。
x.toBoolean() は x の型が Int で 0 なら false, 0 以外なら true になる。x がその他の型だとコンパイルエラー。

334 名前:デフォルトの名無しさん mailto:sage [2020/08/16(日) 02:10:15.75 ID:aQEvXwVj.net]
>>316 C
https://ideone.com/1EStFG

335 名前:デフォルトの名無しさん [2020/08/16(日) 10:54:19.77 ID:DGzsHTxH.net]
Python

>>320
bool(n)

>>316
from itertools import permutations
N = 3
print([x for x in permutations(range(1, N+1))])



336 名前:デフォルトの名無しさん [2020/08/16(日) 11:17:36 ID:x8ZjthFZ.net]
>>316 C++
https://ideone.com/vnmcwl

337 名前:デフォルトの名無しさん [2020/08/16(日) 19:28:34.07 ID:Stgr85a5.net]
>>316
Kotlin
https://paiza.io/projects/m-rh9LUdWqgBDV_7xXtTdA

なんとなく以前作ったような気もするがまた作った。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<338KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef