[過去ログ] プログラミングのお題スレ Part17 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
401: 2020/04/29(水)02:50 ID:189Zc0ZE(1/5) AAS
>>398 ご褒美あげるよ
外部リンク:www.google.co.jp
402: 2020/04/29(水)02:53 ID:189Zc0ZE(2/5) AAS
>>400
お前も、ご褒美、欲しい?
403: 2020/04/29(水)02:54 ID:189Zc0ZE(3/5) AAS
やっぱ、お前には、あーげない。
404: 2020/04/29(水)02:57 ID:189Zc0ZE(4/5) AAS
なぜこの程度で、黙る?
405: 2020/04/29(水)02:59 ID:189Zc0ZE(5/5) AAS
かわいそうなことをしてしまったかな…
406: 2020/04/29(水)03:13 ID:VGrmX9xw(1/2) AAS
ご褒美にどうせ貼るならこっちだろ
外部リンク:www.google.co.jp
407: 2020/04/29(水)03:14 ID:VGrmX9xw(2/2) AAS
いやいやこっち
外部リンク:www.google.co.jp
408: 289 2020/04/29(水)07:47 ID:h4pVS5Or(1) AAS
>>286 Ruby
外部リンク:ideone.com
主な処理をテーブルで済ませて高速化
ideone の時間制限内に完走できた
409: 2020/04/29(水)09:28 ID:7z7Xd+nS(1) AAS
>>366 Ruby
# A <= B とする

def f(a, b, c, arr, cl = false)
  return 0 if arr.empty?
  arr = arr.clone
  cap, size = arr.shift
  return a * size + f(a, b, c, arr, cl) if cap == cl
  [c + a * size + f(a, b, c, arr, !cl), b * size + f(a, b, c, arr, cl)].min
end

g = -> str {str.scan(/[A-Z]+|[a-z]+/).map{|s| [s.match?(/[A-Z]/), s.size]}}
省9
410: 2020/04/29(水)09:42 ID:v+B1NZPE(1) AAS
>>308
2番目の例impossibleじゃなくて S -> 3 -> Gじゃないの?って思ったら入力1行目はH Wだった
411: 2020/04/29(水)16:10 ID:HpBd3h/I(3/4) AAS
>>271
Java
外部リンク:paiza.io
412: 2020/04/29(水)21:05 ID:HpBd3h/I(4/4) AAS
>>234
Java
外部リンク:paiza.io
413: 2020/04/30(木)06:48 ID:2MGLj+B4(1) AAS
>>293
4入力セレクタ

digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_6 ; aa_1_1, aa_1_1 -> aa_1_7 ; aa_1_3, aa_1_1 -> aa_1_8 ;
aa_1_5, aa_1_1 -> aa_1_9 ; aa_1_7, aa_1_2 -> aa_1_10 ; aa_1_7, aa_1_4 -> aa_1_11 ;
aa_1_10, aa_1_8 -> aa_1_12 ; aa_1_11, aa_1_9 -> aa_1_13 ; aa_1_12, aa_1_6 -> aa_1_14 ;
aa_1_13, aa_1_0 -> aa_1_15 ; aa_1_15, aa_1_14 -> aa_1_16 ;
}
省1
414: 289 2020/04/30(木)07:15 ID:SPWNNB7s(1) AAS
>>286 Ruby
外部リンク:ideone.com
2pass化 25%ほど高速化
415: 2020/05/01(金)05:08 ID:GhPTuZah(1) AAS
>>286
EXNORはちょっとおもしろい。
Step 7, Solution 1
0 : -1, -2: 0, 0, 1, 1 : 2
1 : -1, -2: 0, 1, 0, 1 : 2
2 : 0, 0: 1, 1, 0, 0 : 2
3 : 1, 0: 1, 1, 1, 0 : 3
4 : 1, 1: 1, 0, 1, 0 : 2
5 : 4, 2: 0, 1, 1, 1 : 3
6 : 5, 3: 1, 0, 0, 1 : 2 *
416
(2): 2020/05/01(金)05:42 ID:VWVnAecH(1/6) AAS
お題: 関数とパイプを実装せよ
以下のような文字列をパースし、パイプに繋げながら関数を実行せよ
標準入力と標準出力の代わりにバッファを使って実装すること

in < "hello"
out > hello

in < "hello | world"
out > helloworld

in < "world | hello"
out > worldhello

in < "hello | upper"
省3
417
(1): 2020/05/01(金)06:02 ID:+MJaN8j/(1) AAS
>>416
hello | upperはhelloupperだろ
418: 289 2020/05/01(金)07:03 ID:bMo1YMx1(1) AAS
>>286 Ruby
外部リンク:ideone.com
一度に 4bit計算 40%ほど高速化
419: 2020/05/01(金)07:11 ID:VWVnAecH(2/6) AAS
>>417
upperはバッファを大文字にする関数
420: 2020/05/01(金)07:20 ID:kd4VrQns(1) AAS
いや、存在する関数を全部定義しないと実装なんてできんやん
突っ込まれて思わなかったの?
421: 2020/05/01(金)07:55 ID:VWVnAecH(3/6) AAS
hello, world, upperだけ実装すればいいのでは
422: 2020/05/01(金)08:08 ID:VWVnAecH(4/6) AAS
みんな真面目だなw
423
(4): 2020/05/01(金)08:25 ID:VWVnAecH(5/6) AAS
>>416 書き直し

お題: 関数hello, world, upperを実装し、それらをパイプで繋げて実行できるようにせよ
標準入力からコマンドライン文字列が一行ずつ入力されるので、それをパースして上記の関数を組み合わせて実行する
関数の出力と入力には標準入出力を使う代わりに、バッファを使い、コマンドライン全体の実行が終わったら構築したバッファを標準出力へ出力すること
例えば入力されるコマンドラインは

in < hello
in < hello | world
in < hello | world | upper
in < world | hello
in < world | hello | upper
省12
424
(1): 2020/05/01(金)08:29 ID:R0k5e7Mk(1) AAS
hello world それぞれを改行無しの printf などで出力し
upper は大きくするだけか
425: 2020/05/01(金)08:34 ID:VWVnAecH(6/6) AAS
>>424
バッファを使わずに標準入出力だけで実装できるならそれでもいいです
426: 2020/05/01(金)11:04 ID:MCEzZFz/(1) AAS
Ruby には、まさに文字列(バッファ)に、IO インタフェースを実装したクラス、StringIO がある!
427
(1): 2020/05/01(金)11:29 ID:TOWtsDG5(1) AAS
>>423 Ruby
$><<$_.split(' | ').reduce(''){|s,e|[s.upcase,s+e][e.ord%-3]}while gets

-*- input -*-
hello
hello | world
hello | world | upper
world | hello
world | hello | upper

-*- output -*-
hello
省4
428: 2020/05/02(土)23:08 ID:MMgV24Hu(1) AAS
>>423
Java
外部リンク:paiza.io
429: 2020/05/03(日)01:19 ID:SFv1ny6W(1) AAS
>>423 Perl5, 要求仕様通り素直に三つの関数を定義し、文字列をparseした単語の関数名を呼び出す形で実装

sub hello { $o .= 'hello' }
sub world { $o .= 'world' }
sub upper { $o = uc $o }
for (<DATA>) {
 $o = '';
 &$_ for /(\w+)/g;
 print "$o\n";
}
__DATA__
省14
430: 289 2020/05/03(日)07:15 ID:E6IlR6fn(1) AAS
>>286 Ruby
外部リンク:ideone.com
枝刈りを強化 38%ほど高速化
431
(1): 2020/05/03(日)09:17 ID:n5Gy3ytY(1) AAS
>>427
world | upper | hello
432: 2020/05/03(日)09:27 ID:/8opEJBh(1) AAS
>>431
ちゃんと"WORLDhello"って出力される
433: 2020/05/04(月)00:23 ID:k2FsLwVs(1) AAS
>>423
Kotlin
外部リンク:paiza.io

文字列を判定して対応する処理をするだけでも良かったが、Map に文字列と対応する処理をセットしてそれを呼び出して実行させるようにした。
また hello, world, upper 以外が入力されるとエラーが出るようになっている。
434: 2020/05/04(月)00:44 ID:Jy1F1UMD(1/2) AAS
また変なTwitterの奴か
435
(1): 289 2020/05/04(月)07:13 ID:p+pGQ7l4(1) AAS
>>286 C++
外部リンク:ideone.com
Ruby から移植。実行時間は Rubyより 90倍程度高速化
436
(1): 2020/05/04(月)07:38 ID:kseU4FEU(1) AAS
>>435
端子の出現順を固定しないから無駄に組合せが増えているのではないだろうか。
437
(2): 2020/05/04(月)13:46 ID:FrWOvyZy(1/2) AAS
お題
H行W列のマス目が与えられる。左上の座標を(0, 0)、右下の座標を(H, W)とする。
座標(0.5, 0)を始点にしてボールを右下45度の方向に発射する。
ボールが始点に戻ってくるまでに壁に衝突する回数を求めよ。
(マス目の範囲外は壁とみなす。ボールの大きさや摩擦などは無視してよい)

[入力]
H W
('.'が地面、'#'が壁)

[例]
1 1
省15
438: 2020/05/04(月)15:35 ID:oc+BowE6(1/2) AAS
>>437
x = Math.gcd(H, W);
print((H / x + 1) * ( W / x + 1));
439: 2020/05/04(月)15:38 ID:oc+BowE6(2/2) AAS
ああ、違うな
壁って長方形の辺上にだけあるのかと思って解いてた
440: 2020/05/04(月)16:28 ID:cRRhYgqa(1) AAS
バーカ
441: 2020/05/04(月)17:18 ID:7s1fJbf+(1) AAS
AA省
442
(9): 2020/05/04(月)18:29 ID:FrWOvyZy(2/2) AAS
お題
2つの文字列について、文字列を構成する文字が同じで、最初と最後の文字が合っていれば、
その2つの文字列は等価であるとみなす。

文字列がN個与えられる。
上記ルールに従って重複を除去したとき、文字列はいくつ残るか?

(例)
6
programming
odai
prorgamnimg
省4
443
(1): 2020/05/04(月)19:25 ID:ku0WQYaW(1) AAS
>>442 Perl5、"6"も文字列に含めれば、4

for (<DATA>) {
 @a = /(\w)/g;
 %h = map{$_ => 1} @a;
 $s = $a[0].join('', sort keys %h).$a[-1];
 print "$_ -> $s\n";
 $g{$s}++;
}
print keys(%g)."\n";
__DATA__
省17
444: 2020/05/04(月)19:32 ID:Jy1F1UMD(2/2) AAS
暇人か
445
(1): 2020/05/04(月)19:38 ID:aNaLc8en(1) AAS
>>442
(defun cambridge-string= (a b)
(and (char= (elt a 0) (elt b 0))
(char= (elt a (1- (length a))) (elt b (1- (length b))))
(string= (sort (copy-seq a) #'char<) (sort (copy-seq b) #'char<))))

(defvar *set* nil)
(dotimes (n (read))
(pushnew (read-line) *set* :test #'cambridge-string=))
(princ (length *set*))
common lispのsortは破壊的だったのか
446
(1): 2020/05/04(月)23:39 ID:g5q+36pu(1/2) AAS
>>443
Java
外部リンク:paiza.io
447: 2020/05/04(月)23:43 ID:g5q+36pu(2/2) AAS
>>446
おぎゃー
レス番間違えた
>>442
外部リンク:paiza.io
448: 2020/05/04(月)23:55 ID:GlEFtj51(1) AAS
>>442 Ruby

p %[6 programming odai prorgamnimg oadi pgorgamming idao].
uniq{|s| b, *m, e = s.chars; [b, e, m.uniq.sort]}.size

# => 4
449: 289 2020/05/05(火)07:17 ID:JzUmiA6e(1) AAS
>>436
端子の順番は固定ですよ
なので print_map2() では省略しています
print_map() で出力すれば >>286 のフォーマットになります
450: 2020/05/05(火)09:05 ID:ZpeQ6MPR(1) AAS
>>442 J

smoutput # ~. <@( /:~ , {. , {:);._2 stdin ''
451
(1): 2020/05/05(火)09:59 ID:nQMNje/J(1) AAS
4入力一致の回路
選別

digraph g1 {
subgraph cluster_1 {
label = "Solution_1"
aa_1_0, aa_1_0 -> aa_1_4 ; aa_1_1, aa_1_1 -> aa_1_5 ;
aa_1_3, aa_1_2 -> aa_1_6 ; aa_1_4, aa_1_2 -> aa_1_7 ;
aa_1_5, aa_1_3 -> aa_1_8 ; aa_1_5, aa_1_4 -> aa_1_9 ;
aa_1_8, aa_1_7 -> aa_1_10 ; aa_1_9, aa_1_6 -> aa_1_11 ;
aa_1_10, aa_1_10 -> aa_1_12 ; aa_1_12, aa_1_11 -> aa_1_13 ;
省3
452: 2020/05/05(火)12:20 ID:hsugdvwn(1) AAS
>>270
R
外部リンク:ideone.com
453
(1): 2020/05/05(火)15:23 ID:JDagEH9a(1) AAS
>>442
c++
外部リンク:ideone.com

sortしてuniqするだけ、45行
454: 2020/05/05(火)16:00 ID:DwVtkNv1(1) AAS
>>453
> auto end_pt = unique(s.begin(), s.end());
> s.erase(s.end(), end_pt);
バグってるぞ
455: 2020/05/05(火)16:03 ID:YfHt+PT9(1) AAS
sortしてuniqするだけなら3になるはずだと思って眺めたら
その前に加えて、先頭と最後の文字の比較もしてるやん
auto equalsBeginBack = [=](string a, string b){
return *a.begin() == *b.begin() && *&a.back() == *&b.back();
456: 2020/05/06(水)10:23 ID:crwQV4oz(1) AAS
>>270 ocaml
外部リンク:ideone.com
457: 2020/05/06(水)11:19 ID:2pJLNopY(1) AAS
>>270 Dart

import 'dart:io';

void main() {
  final var str = stdin.readLineSync();
  const var reg = RegExp(r'\d+');
  final List<int> args = reg.allMatches(str).map((m)=>int.parse(m.group(0))).toList();
  final column = args.removeLast();
  final result = [];
  for(var i = 0; i <= args.length ~/ column; i += column) {
    result.add(args.sublist(i, i + column));
省7
458
(1): 2020/05/06(水)11:28 ID:44vKh6W3(1) AAS
AA省
459: 2020/05/06(水)18:22 ID:izcxg96Z(1) AAS
>>442
Kotlin
外部リンク:paiza.io

複数の同一文字を1文字扱いでやる場合はコメントを外して SortedSet に文字を入れる方を有効にする。
460: 2020/05/07(木)05:41 ID:elBmdblJ(1) AAS
>>442 Io

File standardInput readLines map(do(
sort .. slice(0,1) .. slice(size)
))unique size println
461: 2020/05/07(木)08:19 ID:6mNBxlfC(1) AAS
>>458
こんなこともできるんだな
462: 2020/05/08(金)01:18 ID:i1AtDmyk(1) AAS
色んな言語による実装が見られて楽しい。
ロゼッタストーンのように自分が出来ない言語の実装も
お題ごとに見られて面白い
463: 2020/05/08(金)01:21 ID:+VsvN9e2(1) AAS
回答する人に力量のある人がいて感心する
464: 2020/05/08(金)10:32 ID:4QFssqyQ(1) AAS
>>451
心が癒される回路である。
465: 2020/05/08(金)19:17 ID:Fn4yfVbS(1) AAS
>>442
Haxe で

var input_ary: Array<String> = [ "6", "programming", "odai", "prorgamnimg", "oadi", "pgorgamming", "idao" ];
var str_map = new Map<String, Bool>( );

for ( i in 0...input_ary.length ) {
var char_ary = input_ary[ i ].split( "" );
var tmp_ary = new Array<String>( );
var tmp_str = "";
var char_map = new Map<String, Bool>( );

tmp_str = tmp_str + char_ary[ 0 ] + char_ary[ char_ary.length - 1 ]; // 最初・最後
省16
466
(6): 2020/05/09(土)20:03 ID:slqshlLL(1) AAS
お題
文字列Sが与えらえる。Sの部分列に"odai"は何個あるか?

[1] odadai => 3
部分列は以下の3通り
oda__i
od__ai
o__dai

[2] odaiodai => 5

[3] ooooddddaaaaiiii => 256

[4] daioadiao => 0
467: 2020/05/09(土)20:12 ID:I3214lBo(1) AAS
>>466
greedy algorithmしか思い浮かばんがいい方法があるのかね
468: 2020/05/09(土)20:36 ID:xxoS62Bp(1) AAS
つべこべ言ってねえでコード書け
469: 2020/05/09(土)21:12 ID:CDHXGmMd(1) AAS
>>466
D 再帰の力ってすげー
size_t count_substring(string target, string from) {
if (target.length == 0) {
return 1;
} else if (from.length == 0) {
return 0;
} else if (target[0] == from[0]) {
return count_substring(target[1..$], from[1..$]) + count_substring(target, from[1..$]);
} else {
省3
470: 2020/05/09(土)22:25 ID:146lBXch(1) AAS
>>466
haskell
f [] _=1
f _ []=0
f (x:xs) (y:ys)
| x==y = f xs ys+(f (x:xs) ys)
| otherwise = f (x:xs) ys

f "odai" "odadai" -> 3
471: 2020/05/10(日)02:37 ID:7LyD5VxZ(1) AAS
完全に再帰案件だったな
472: 2020/05/10(日)08:58 ID:4OJfHckY(1) AAS
>>466 Ruby
外部リンク:ideone.com
文字列処理を減らしたいので 2pass化
"odadai" => [[0], [1, 3], [2, 4], [5]] # 2passでは 左が小さな組み合わせをカウント
"odaiodai" => [[0, 4], [1, 5], [2, 6], [3, 7]]
473
(3): 466 2020/05/10(日)13:59 ID:gIVDr8oL(1) AAS
入力サイズが小さいと簡単みたいなので、入力例を追加します。

[1]〜[4]の入力を1000回繰り返した文字列を入力とした場合

[1'] 167501334000
[2'] 668668500500
[3'] 10730784064000
[4'] 999666166500
474
(1): 2020/05/10(日)15:14 ID:f3PnDX6/(1) AAS
>>473
python 外部リンク:ideone.com

計算量は "対象文字数 * 4"
"odai"4文字なら、50万文字もいける
(多倍長のコストの方が多いかも)
475: 2020/05/11(月)00:53 ID:LhYTwRyi(1) AAS
マソコ
476: 2020/05/11(月)19:02 ID:bA9qwXrL(1) AAS
>>474
すごすぎる
477: 蟻人間 ◆T6xkBnTXz7B0 2020/05/11(月)19:04 ID:0EGbwihd(1) AAS
お題: 15パズルの解法のプログラム。
478
(1): 2020/05/11(月)19:46 ID:R+jEWyVC(1) AAS
>>473
外部リンク:ideone.com
479: 2020/05/11(月)20:40 ID:M5DpbX0A(1) AAS
15 パズルは、絶対に解けないパターンもあるけど
480: 2020/05/11(月)21:17 ID:WNe361+M(1) AAS
確率1/2
481: 2020/05/11(月)21:29 ID:7ARsAnzF(1) AAS
解けるパターンでやれ
482
(1): 2020/05/11(月)23:42 ID:Hyf1216H(1) AAS
お題: 15パズルのシャッフルプログラム
483: 2020/05/11(月)23:48 ID:72QosWs+(1) AAS
>>482 js

過去に作ったやつですまん
外部リンク:codepen.io
484: 2020/05/12(火)00:48 ID:1cwWHoSt(1) AAS
>>478
C か
485: 2020/05/12(火)06:39 ID:DbNVGyl2(1) AAS
>>473
D 外部リンク:ideone.com
前半に含まれる"odai"の接中辞たちの数と後半のそれから全体のそれを求める、を再帰的にやる
486
(1): 2020/05/12(火)19:39 ID:MKYG7Wu5(1) AAS
>>466 Ruby
def f(a,b)
r=0
v=b.chars
a.chars.combination(b.size){|x| r+=1 if x==v}
r
end
487: 2020/05/12(火)19:42 ID:Yyd7NZU2(1/2) AAS
>>486
charsじゃなくてeach_charを使うべきだな
488: 2020/05/12(火)19:43 ID:Yyd7NZU2(2/2) AAS
ごめんなんでもないわ
489: 2020/05/12(火)20:28 ID:Az5UEVMy(1) AAS
前にもRubyにケチつけてるやついたな
そんなにRubyが好きなのか
490
(1): 2020/05/12(火)23:41 ID:FPX3gN+i(1) AAS
だれもrubyにはけちつけてないだろ
自意識過剰
491: 2020/05/12(火)23:56 ID:78VrOqdX(1) AAS
だれも〜してないだろって何度も見た言い回しだ
492: 2020/05/13(水)00:00 ID:nr6gd5ft(1) AAS
よそでやれ
493
(2): 2020/05/13(水)00:03 ID:slJfSE7v(1) AAS
>>490
Rubyのコードを見るとシュババ!って「Rubyはもっと簡潔に書ける!Rubyはもっと便利なんだ!」だとアピールするやつがいるってこと。
この板にはRubyガイジが蔓延ってるからそいつが脳裏に浮かんだからレスしてみただけです。
494: 2020/05/13(水)00:05 ID:5NOWSl2X(1) AAS
>>493
気持ちは分かるしそう感じている人は一定数いるが
大人になれ
よそでやれ
495: 2020/05/13(水)00:07 ID:nBU0Zg0F(1) AAS
短いと簡潔は別だけどな
496: 2020/05/13(水)00:21 ID:2w6TZUl8(1) AAS
だれも同じとかいってないだろ
自意識過剰
497: 2020/05/13(水)00:27 ID:6zcLgAPe(1) AAS
いや同じだ。
498: 2020/05/13(水)00:29 ID:vHp1rr46(1) AAS
よそでやれ
499: 2020/05/13(水)00:30 ID:h1pJmPup(1) AAS
おっとrubyの悪口はそこまでにしろ
続きは
2chスレ:tech
でやれ。
500: 2020/05/13(水)05:39 ID:n5K1RBuf(1/2) AAS
言われた本人が言うならまだしも外野は黙ってろ
1-
あと 502 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s