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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2014/01/24(金) 09:59:09.83 ]
プログラミングのお題スレです。

前スレ
プログラミングのお題スレ
toro.2ch.net/test/read.cgi/tech/1357191974/
出されたお題をコーディングして罵られるスレ
toro.2ch.net/test/read.cgi/tech/1354393458/

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

2 名前:デフォルトの名無しさん
  >>1 使用言語
  回答本文

【ソースコードが長くなったら】
codepad.org/
ideone.com/

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

809 名前:デフォルトの名無しさん mailto:sage [2014/05/27(火) 23:48:42.97 ID:5Qu+jOxY]
>>794
ttp://ideone.com/do33Ns
ほぼC。マジで死ぬよー。あってるのか??
Mod使いました。変換可能らしいので変換してください。
スナイプさえ作れば後は足し算で済むし、Notあれば逆変換も作れるし。
たぶん大丈夫だよね?表示関数は正確性のために組み込み演算子使ってます。
計算量落とすってどうやってやるんだぁ〜〜〜〜!!!!!死ぬ。

810 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 00:02:18.77 ID:BR1Tkgwo]
modって余り?
a - d * (a / d) で?

811 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 00:08:12.82 ID:1CfqcAEA]
>>810
そう。余り。剰余。説明は>>798かな?
それであってると思うよ。

812 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 01:09:11.29 ID:1CfqcAEA]
>>803
馬鹿ですが解けましたよ?(ニッコリ
多分。(がくがくぶるぶる。

813 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 19:28:15.71 ID:r7yQZe0C]
>>517
模範解答の解説来たね

paiza.hatenablog.com/

814 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 19:35:45.93 ID:BR1Tkgwo]
>>813
> スタックを使うO(HW) 解法が存在します。

どんな方法や

815 名前:デフォルトの名無しさん mailto:sage [2014/05/28(水) 21:24:07.39 ID:EZ6i74UC]
>>794 C
ideone.com/vPuYAR
1bitずつ32個計算する方法しか思いつかんかった。。。

816 名前:809 mailto:sage [2014/05/29(木) 03:20:59.54 ID:xZLwX0Bk]
>>815
ジェネリックでよいねー。かなりコンパクト!

817 名前:デフォルトの名無しさん mailto:sage [2014/05/29(木) 08:52:56.01 ID:QcRCI5DY]
>>815
正解っぽいね
乙でした



818 名前:809 mailto:sage [2014/05/29(木) 23:10:25.35 ID:xZLwX0Bk]
あえてやらなかったが、pow使っていいなら定数値省けるんだよなぁ。多ビット対応もできるし。

819 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 10:04:16.43 ID:ap828pqo]
pow は四則演算じゃないよね

820 名前:デフォルトの名無しさん mailto:sage [2014/05/30(金) 11:04:19.83 ID:K92fSmS+]
>>815
俺には難しい
マイナスは2の補数で表現するってあたりから勉強する
でも、とても励みになった、サンクスです

821 名前:809 mailto:sage [2014/05/30(金) 23:04:18.74 ID:1PtW452N]
>>819
それもそうだね。作るには四則演算とループがいるんだよな。
使わなくてよかったか。

822 名前:809 mailto:sage [2014/05/31(土) 02:27:23.08 ID:RzySFflE]
ところで、>>794召喚して、>>809があってるかそろそろ聞きたいんだが。

823 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 05:11:19.49 ID:74UzWmZV]
四則演算になってないような

824 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 06:28:06.16 ID:S66lgqUj]
ideone.com/3zXOy4

825 名前:デフォルトの名無しさん mailto:sage [2014/05/31(土) 20:17:31.24 ID:RzySFflE]
>>823
四則演算+剰余しか使ってないのにぃ〜。
1ビット算出して大きくしてるだけじゃないですかー。Orz
関数も使っちゃダメなの?そんな話ないよ。
たとえ関数がだめでも展開するだけになっちゃうよ?マクロ組むとか。

具体的にどう四則演算になってないか教えてください。
お願いします。

826 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:03:30.64 ID:JwNR3eSO]
>>823
ビット演算になっていにょいようにょ

827 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 10:50:18.35 ID:QQAPK+BU]
templatだけでも実装できそうだな



828 名前:デフォルトの名無しさん mailto:sage [2014/06/01(日) 21:15:24.10 ID:073ZpLpT]
>>827
再起禁止なんですよね。
テンプレートの扱いについては未定義ですが・・・。

829 名前:809 mailto:sage [2014/06/02(月) 00:03:02.55 ID:Zd9YSbvW]
うぅ。断片的にああでもないこうでもないと言われても!

わけがわからないよ。

うぅわああああん。(ToT

830 名前: ◆0qAv26otVI mailto:sage [2014/06/03(火) 01:29:23.25 ID:x50KDxpk]
>>781 4x4x4 > 2x4x3
ideone.com/cs3nmw

831 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 02:23:16.40 ID:R8wsXVj9]
>>830
がんばってるねー。
これだけ真面目に改造してくれると書いた方も誉れだよ。
がんばって!

そうそう、ループ回数が4*4*4のようだけど、あってる?
自分でやれってこと?

832 名前:デフォルトの名無しさん mailto:sage [2014/06/03(火) 02:30:34.43 ID:R8wsXVj9]
>>830
そうそう、投稿するときは一言ほしいなー。
このテストパターンは全部真になることを想定して書いてあるの?

833 名前:デフォルトの名無しさん mailto:sage [2014/06/04(水) 05:30:43.92 ID:QbUS6u7k]
   |=番兵|_
  ( ・ω・) <ステンバーイ
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)

834 名前:デフォルトの名無しさん mailto:sage [2014/06/04(水) 09:59:31.38 ID:q8b8aypY]
>>832 VSExpress2010 用に
C++11 から C++ に直してくれ。アップアップ溺れそう

835 名前:デフォルトの名無しさん mailto:sage [2014/06/04(水) 23:41:52.12 ID:1iROfyZz]
お題:n個の任意の自然数の和がxのとき、n個の自然数の積の最大値を求める。

x=10 -> 36
x=64 -> 13947137604
x=100 -> 7412080755407364

836 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 01:08:46.94 ID:MiWap7Hz]
1/2の自乗は1/4
1/3の三乗は1/27だから
中央値に近い自乗が最大?

837 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 01:12:17.98 ID:t1UhlRAe]
>>835 C
ideone.com/PtLu5N



838 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 01:20:29.41 ID:MiWap7Hz]
36って2*3*2*3か

839 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 02:36:57.82 ID:g1rky1u8]
>>835 Python
from __future__ import print_function
def f835(x):
  a, b = x % 3, int(x / 3)
  if a <= 1 and b >= 1:
    a += 3
    b -= 1
  s = "{}*3**{}".format(a, b)
  m = eval(s)
  print("x={0} -> {3}={1}".format(x,m,a,s))

for i in range(10): f835(i)
f835(10)
f835(64)
f835(100)

840 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 06:15:27.83 ID:/utsiCTM]
>>834
特に特殊なことやってないと思うんだけど。
for文がForeachなだけで。俺もvc2013eeで書いてるし。
C++03は忘れました。テヘッ!

841 名前:ゴアー神風 ◆mW2uevDxfA mailto:sage [2014/06/05(木) 07:26:17.09 ID:tu5JPzwB]
>>835
ttp://ideone.com/i8yatB
ほぼC。間違ってること確定だが、問題が不明瞭で正確性がない。
言い訳はソースに書いておいた。
テストとは一致してないので、多分俺のだめだね。
結果が与えられてるんだったら、素数で割ってけばNを求められるんだがね〜。
結果書いてあるけど、それは計算前に取得できるのか、計算後に取得できるのか不明瞭だ。

とりあえず書いたので、>>837を参照しようと思う。

842 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:27:28.84 ID:tu5JPzwB]
げ、間違えた。ハンドルなんていらない・・・。Orz
PCゲーのHeathstoneをよろしく!

843 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 07:40:09.12 ID:tu5JPzwB]
なるほど、こうやって解くのね。
上限値を超えない保障をどうやってやってるのかよくわからん・・・。Orz

844 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 08:49:21.85 ID:tu5JPzwB]
ttp://ideone.com/l6EyKA
うーん。お手軽実装だと、ここら辺が限界。
一応、偏ってるが思いつく総当たりはしてるが、思った結果にならんね。
うーん。よくわからん。

845 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 09:18:40.08 ID:nSDQrrzJ]
>>835
ruby
ttp://ideone.com/vKiuYj

846 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 09:25:06.90 ID:tu5JPzwB]
お前ら頭いいなー。メッキがはがれてきたよ。シクシク。

847 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 11:01:34.79 ID:2vI6486P]
>>846
大丈夫、はなから諦めてる俺がいる



848 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 11:42:34.78 ID:tu5JPzwB]
>>847
とりあえず、間違ってもいいから答えを出すのがモットーだが、
あきらめた時の敗北感だけはどうしても許せん。ので書くんだが、この格差ですよ。
世の中広い!Orz

849 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 12:36:51.82 ID:fFqYdufV]
>>835 Io
f := method(x,(3**((x/3)floor-1)*(2+2**(x%3)))floor)

Io> f(10)
==> 36
Io> f(64)asString(0,0)
==> 13947137604
Io> f(100)asString(0,0)
==> 7412080755407364

850 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:15:41.63 ID:X0QJHSOX]
>>848
Schme

手順1
自然数xは3をm回加えて、2をn回加えた数となるような
m,nを求める

手順2
3をm回かけた数に2をn回かけた数をかける
(求める最大値= 3^m * 2^n )

ttp://codepad.org/20fkwUl9

851 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 15:19:17.67 ID:X0QJHSOX]
>>850のアンカーまちがえた
正しくは
>>835 への解答

852 名前:デフォルトの名無しさん [2014/06/05(木) 18:22:28.75 ID:O76MB/nL]
>>835
Go で動的計画法
gist.github.com/anonymous/c30826b49bcdd418b08e

853 名前:デフォルトの名無しさん [2014/06/05(木) 18:48:16.27 ID:O76MB/nL]
つーか漸化式直接書き下せるのか、なんで 3 で割ったら最大値になるんだ?

854 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:04:01.52 ID:O76MB/nL]
>>853
自己解決。

簡単のため N を k "等"分した場合の最大値を求めることにする。
この時 Σ(i ~ k) (N/k) = N/k Σ(i ~ k) = (N / k) * k = N と表せることから

Π(i ~ k) (N/k) = (N/k) ^ k ... (1)

を最大にするような k を選べばよい。
(1)の対数を取って f(k) として、対数の最大値を求めることにする。

f(k) = log((N/k)^k) = k * log(N/k)

k を微分して極値を求めると

f'(k) = log(N) - log(k) - 1

より f'(k) = 0 の時 k = (N/e) となる。
つまり (N/e) 等分した場合最大値を取る。 e = 2.718 で、この値は今回の場合実数ではなくて、自然数でなければならない。
ここで、以下の点に着目することにより

f(N/2) = N * log(2)/2 = N * 0.34657
f(N/3) = N * log(3)/3 = N * 0.36620

から f(N/2) < f(N/3) となるので、N = 3 で分割させるのがよい。
(もし余りが存在する場合は、余りを 2 の倍数にするようにする)

よって >>850 のようなアルゴリズムになる。

855 名前:デフォルトの名無しさん mailto:sage [2014/06/05(木) 20:07:01.78 ID:2vI6486P]
>>835
Scheme >>850のデバッグ版


;;; 手順1
;;; 自然数xは3をm回加えて2をn回加えた数
;;; であるようなm,nを求める。mは可能な最大値を
;;; 求める
;;; (例)
;;; 14 -> (+ 3 3 3 3 2) m=4,n=1 Ok
;;; 14 -> (+ 3 3 2 2 2 2) m=2,n=4 No
;;;
;;; 手順2
;;; 3をm回かけた数に2をn回かけた数をかける
;;; 求める最大値-> 3^m * 2^n

ttp://codepad.org/WVzTwBh6

856 名前:841 mailto:sage [2014/06/05(木) 23:25:09.50 ID:tu5JPzwB]
>>854
なるほど、わからん。
けど、3^m*2^nにすればいいことが分かったのでこれなら解けるわ。
数学できる人ってすごいなー。

857 名前:841 mailto:sage [2014/06/06(金) 00:04:08.90 ID:tu5JPzwB]
ttp://ideone.com/n9bWEl
>>855メソッドをパクッてそれっぽい値を出してみた。
確かに出るなー。うーん。俺ってほんと馬鹿。



858 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:16:27.56 ID:K7YTK/42]
>>835って一般解じゃなく10と64と100のケースだけ考えろってことなの?

859 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:20:59.52 ID:gpt2nU9A]
>>835召喚しないとなー。
最近出題者の失踪が相次いでて出てきてくれないんだよね。

860 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:39:43.36 ID:tIw3lkPh]
>>858
全ケースの一般解じゃない?
ちなみに 8 バイトの long long でも 1000 までは計算できない
問題としてはシンプルで面白いと思うけど

861 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:48:59.44 ID:K7YTK/42]
そかありがと

862 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 00:53:56.18 ID:K7YTK/42]
2+2+2=6 -> 2*2*2=8

3+3=6 -> 3*3=9

このパターンのみが和と積の大小関係が逆転するケースって感じなのかな?

863 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:07:41.46 ID:K7YTK/42]
つまり6の倍数で場合わけ?
ideone.com/ZFLn23

864 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 01:27:53.53 ID:oWmY0rhm]
#include <stdio.h>

long long int pow3(int a){
if(a == 0) return 1;
return 3 * pow3(a-1);
}
void f(int n){
int a2, a3;
long long int m;

a3 = n/3;
a2 = n%3;
if(a2 == 0) a2 = 1;
else if(a2 == 1) {a3--; a2 = 4;}
m = pow3(a3) * a2;
printf("%lld\n", m);
}
int main(){
int i;
for(i = 2; i < 120; i++){
printf("%d\t", i);
f(i);
}
return 0;
}

865 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 02:50:28.11 ID:gpt2nU9A]
>>862
へぇ、同じコストで逆転することがあるのか。
例外ってこういうことを言うのかねぇ〜。
べんきょうになるわ。

866 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 03:55:37.93 ID:GstR2kK+]
>>862
これは2をはじめに考えてしまっている
なるべく積がおおきくなるようにしたいのだから
3をはじめに考えなければならない

そうすれば6で場合分けする必要はない

867 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 03:59:18.71 ID:GstR2kK+]
Scheme
>>855 のデバッグ版(+ m,n表示付き)
ttp://codepad.org/UKKAW4Cy



868 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 04:39:58.94 ID:LPhXdKGT]
function f835(x) {
 return pow(3*3, (int)(x/6)) * (x%6 ? (x%6==5? 2*3 : x%6) : 1);
}

869 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 05:40:59.09 ID:47r183By]
>>864
f(1)がキケン

870 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 05:52:02.29 ID:47r183By]
>>869
数が1個では和も積も計算できませんね。失礼しました。前言、忘れてください。

871 名前:デフォルトの名無しさん mailto:sage [2014/06/06(金) 05:53:24.09 ID:LPhXdKGT]
function f835(x) {
 return pow(3, (int)((x-4*((x%3)%2))/3)) * (4*((x%3)%2) + (x%3)*(1-(x%3)%2));
}

872 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 07:57:32.21 ID:rofUEf38]
>>853 >>854 >>856
■なぜ3^m * 2^nが最大値となるのか
ええと、別表現です(ま、いろいろ言えるわけですが)
なぜ3のm乗と2のn乗との積が最大値になるのか?というと

1. 自然数2と3はそれを1ではない2つの自然数の和としては表現できない。

( 1は乗法の単位元なので最大の積を求めるためには最悪だから無視するよーん
1を認めてしまうと (a1 + a2) > ( a1 * a2)
となってしまい、最大の積を求めるもクソもなくなる
例:x=100
100 = ( 1 + 99) -> ( 1 * 99)=99 )

2. しかし4以上は2または3の和として表現できる

3. さて一般に1でない自然数数a1,a2の積はその和に等しいかそれよりも大きい
(a1 * a2) >= ( a1 * a2)

4. 以上から4以上は3と2の和に分解したほうが大きな積を得ることができる(正確には小さな積を得ることを防げる)

5. そこで、3のm乗と2のn乗の積にするのが一番大きな積にできる

例1: x=10の場合
(+ 4 6) -> (* 4 6)=24 とするよりも (* (* 2 2) (* 3 3))=36
としたほうが大きな数になる

例2:x=4の場合
(+ 2 2)しかないので(* 2 2) これは(+ a1 a2 ) = (* a1 2)の場合

873 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 08:12:47.01 ID:rofUEf38]
補足・
どうして、自然数4以上は、2と3の和として表現できるか?といえば、
1. 自然数は偶数か奇数である
2. 偶数は2の和として表現できる
3. 奇数はan = (3+ 2*(n 1)) なので3と2の和として表現できる
おしまい

874 名前:864 mailto:sage [2014/06/07(土) 08:19:48.14 ID:tEh/6PYv]
>>871
TorF ? (x-4*((x%3)%2))/3 : x/3-((x%3)%2)

875 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 08:33:20.60 ID:y6RJGWR3]
>>868のほうがシンプル

876 名前:864 mailto:sage [2014/06/07(土) 12:44:00.88 ID:tEh/6PYv]
a3 = n/3 - n%3%2;
a2 = 4*(n%3%2) + (1+n%3/2) * (1-n%3%2);
m = pow3(a3) * a2;
>>875 その前にダメなんだけど。(:->)

877 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 16:47:10.59 ID:fH+IC/Nz]
お題:長さが3文字以上の文字列が与えられたとき、2文字の組合せを求める。

today -> to td ta ty od oa oy da dy ay



878 名前: ◆0qAv26otVI mailto:sage [2014/06/07(土) 17:17:14.66 ID:tEh/6PYv]
だだし、文字の順番は変えない

879 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 18:33:44.13 ID:rofUEf38]
例を見れば自明

880 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 19:26:39.16 ID:3R8CEA88]
//未テスト
char buf[1000];
fgets(buf,1000,stdin);
int len=strlen(buf);
buf[--len]=0;
for (int i=0;i<len-1;++i)
for(int j=i+1;j<len;++j)
{putchar(buf[i]);putchar(buf[j]);putchar(' ');}

881 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 19:33:16.22 ID:y6RJGWR3]
>>876
> その前にダメなんだけど。(:->)

ダメって?

882 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 19:35:01.70 ID:lO6x1Rj4]
>>877 Haskell
subseq2 [] = []
subseq2 (x:xs) = foldr (\y acc -> [x,y] : acc) (subseq2 xs) xs

main = print $ subseq2 "today" -- ["to","td","ta","ty","od","oa","oy","da","dy","ay"]

883 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 21:19:33.26 ID:uZb6ezHd]
>>877
Scheme

;;; 手順1
;;; 文字列strを最初の1文字carと
;;; 2文字目以降の文字列cdrに分ける
;;; 例:"today"
;;; str="today"
;;; car = 't
;;; cdr = "oday"
;;;
;;; 手順2
;;; carと(cdrのn文字目)の組set1を作る
;;; 例 car= 't cdr="oday"
;;; set=("to" "td" "ta" "ty")
;;;
;;; 手順3
;;; strを2文字目以降に更新する
;;; 例 str="today" -> str="oday"
;;;
;;; もしstrの長さが1以下になったらset1が解答
;;; そうでなければset1に(手順1から手順3を
;;; 繰り返してできた組を加えたものが答え)
;;; (再帰させる)

ttp://codepad.org/kT3XrspK

884 名前:デフォルトの名無しさん mailto:sage [2014/06/07(土) 23:27:58.59 ID:fH+IC/Nz]
>>877 J
f =: {~4$.[:$.[:</~i.@#

,' ',.f 'mevius'
me mv mi mu ms ev ei eu es vi vu vs iu is us

885 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 08:26:25.33 ID:W6M7L2Zj]
>>877 Prolog

'長さが3文字以上の文字列が与えられたとき、2文字の組合せを求める。'(_文字列,_文字組合せ) :-
  sub_atom(_文字列,0,1,_,_文字_1),
  sub_atom(_文字列,1,_,0,_文字列_2),
  '長さが3文字以上の文字列が与えられたとき、2文字の組合せ'(_文字列_2,_文字_1,_文字組合せ).

'長さが3文字以上の文字列が与えられたとき、2文字の組合せ'(_文字列_2,_文字_1,_文字組合せ) :-
  sub_atom(_文字列_2,_,1,_,_文字_2),
  atom_concat(_文字_1,_文字_2,_文字組合せ).
'長さが3文字以上の文字列が与えられたとき、2文字の組合せ'(_文字列_2,_,_文字組合せ) :-
  '長さが3文字以上の文字列が与えられたとき、2文字の組合せを求める。'(_文字列_2,_文字組合せ).

886 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 16:48:08.68 ID:R0ABWUTD]
>>877
ttp://ideone.com/hpiuHI
べたーC。あってるかな?
おまけで逆順検索入れておいた。簡単だったし。
なんか途中で動かないコードに出会って泣いてたが、アドレス計算になってたのかなぁ。
この辺があいまいだな。俺。

887 名前: ◆0qAv26otVI mailto:sage [2014/06/08(日) 17:12:46.08 ID:GKqJwll3]
重複(同じ2文字)は除く



888 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:17:45.89 ID:R0ABWUTD]
>>887
やっといてあれだけど、遅いよ。
問題は正確に作りましょう。仕様書だからねぇ。

889 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:26:59.27 ID:8aybWNLh]
>>887
え?
そうなの?
なら書き直すか

890 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:29:35.06 ID:8aybWNLh]
確かに今回は異様に簡単な問題だったな

891 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:33:25.88 ID:R0ABWUTD]
>>887
同じ2文字というのは、たとえば"aa"という組み合わせはおk?
それとも、"AB"と"BA"が同じ意味ということでNG?
その両方?

892 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:39:01.44 ID:8aybWNLh]
>>891
出題者に聞かないとわからないね
"abababab"の場合、どうなりますかあ?
ま、問題が甚だ曖昧だった!かな

893 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 17:45:09.43 ID:R0ABWUTD]
>>892
まぁ、そうだねー。
その例題解いてくれればヒントになるわな。
俺の場合"aa"は許可してるからねぇ。

894 名前: ◆0qAv26otVI mailto:sage [2014/06/08(日) 18:01:50.51 ID:GKqJwll3]
Not except same character, but except same word.

895 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:03:24.82 ID:8aybWNLh]
>>894
ん?出題者?
あれれ?

896 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:09:55.46 ID:R0ABWUTD]
>>894
英語読めない情弱に英語で立ち向かってくるとはやるな!!

897 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:12:51.81 ID:R0ABWUTD]
えーっと、文字単位では区別しないが、ワード単位では区別するかな。
あってる?



898 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:16:16.90 ID:FvrpJhIi]
>>887 Python
from __future__ import print_function
import itertools
def f887(s):
  a = ["".join(x) for x in itertools.combinations(s, 2)]
  b = []
  for x in a:
    if x in b: continue
#    if x[0] == x[1]: continue
    b.append(x)
  print("{} -> {}".format(s, " ".join(b)))

f887("today")
f887("abcdcba")

言葉足らずな出題者様の仰せのままに。

899 名前:877 mailto:sage [2014/06/08(日) 18:28:34.45 ID:6CdOGeRB]
>>877 Io
f := method(s,
a := s size - 1
for(i, 0, a - 1,
for(j, i + 1, a,
write(s slice(i, i + 1),s slice(j, j + 1), " ")
)
)
)

Io> f("book")
bo bo bk oo ok ok

>>878 >>887 >>894
は私は関知しません。

組合せの問題も2個に限れば簡単にできるな、という問題のつもりでした。

900 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 18:41:23.39 ID:R0ABWUTD]
ぐあ、便乗だったか。まぁ、いい。
解答は示した。としておこう。
俺の微妙に間違ってるけど、いっか。

901 名前:デフォルトの名無しさん mailto:sage [2014/06/08(日) 19:41:38.65 ID:Qs6rCHv1]
>>877 Perl
ideone.com/05potW






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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