プログラマから出題。これができたら一人前!!!!!
プログラマの問題集スレッドです。
このスレからプログラマが巣立ちます。
書籍などでは学習できないネタ歓迎。
2
デスマーチプロジェクトへの召喚回避
4 :
仕様書無しさん:02/04/25 03:03
システム障害起こせ。
ミスから学べ。
間違っても運用始まってからは起こすなよ。
テスト段階でだ。
5 :
仕様書無しさん:02/04/25 03:05
大便放出時に閃けるようになったら一人前じゃ。
6 :
仕様書無しさん:02/04/25 03:08
ドラゴンボールを集めろ。
話はそれからだ。
7 :
7 ◆777sHKOE :02/04/25 03:11
7
運用段階で事故る
これ最強。
始末書や社損伝票書くときの虚しさ。
障害記録DBに始末書以上に詳細に事故の経緯と技術的な点を纏め上げる鬱さ。
日頃、大口を叩くSヨまでもが事故るといじられっこのような状態になるのが見ていて痛々しいぞ。
ソフト屋としてのわびさびがそこにある。
運用時に発生した事故!これを如何に穏便に済ますかが、プロ!
きずかぬように、さとれるように、やばいことにはふたおして!
時代遅れの、システムでいい!時代遅れのユーザには!
10 :
マジレス屋1972:02/04/25 03:44
ハッシュ法のメリットとデメリットを書け。
11 :
仕様書無しさん:02/04/25 03:54
メリット:
基本的には定時間アルゴリズムになる。即ち、早いってこと。
デメリット:
コンフリクトが多発する場合にデータの管理がややこしくなる。
オープンハッシュでもクローズハッシュでもこれは変わらない。
こういった場合、ハッシュ関数の選択は重要。
ハッシュをやめてB木にするとかいったことも必要になるね。
【出題】
Q1:今日の夜食の献立を考えましょう。
Q2:今年のGWの出勤予定を提出してください。
プログラマなんて半分くらいはヒッキーだろうから、
コミュニケーションできるようになったら一人前。
>>13 コミュニケーションが一人前のPGは
マとして半人前という罠
15 :
仕様書無しさん:02/04/25 23:13
>>14 それ、この業界の常識。
口が達者な奴ほど、技術者としては半人前。
ハッシュとマッシュポテトの違い・・・(以下略)
>>14,
>>15 そんな嘘おしえんなや(藁
外部との折衝ができるようになって一人前。
>>17 いや、その傾向はあるぞ。
#みんなそうだとは言わんよ。もちろん。
>>15 どこでもそうでしょ
中田、イチローなんかいい例でしょ
21 :
仕様書無しさん:02/04/25 23:46
あ、やっぱそこ、この前動いてたときのほうがただしんだわ、もどしといてねー。
>>21 つまり初心者のうちからバージョン管理しろということですね:−)
23 :
仕様書無しさん:02/04/26 00:24
まず、2週間風呂・シャワー無しで過ごせ。
洗面所の水で髪を洗うのは認めてやる。
24 :
仕様書無しさん:02/04/26 00:27
個室トイレまで我慢するのを諦めて、近くの給湯室で吐くようにしろ。
プログラマとSEとコーダと営業の違いと使い分けをマスターできれば一人前だ。
プログラマもSEもコーダも営業も一人で出来たら一人前。
やってます。
本当です。
27 :
仕様書無しさん:02/04/26 00:46
Oracle使えて何人前^-nですか?
29 :
仕様書無しさん:02/04/26 00:48
>>26 でも、どれもトップにはなれないという罠。
30 :
仕様書無しさん:02/04/26 00:58
・コミュニケーション能力、技術力ともに× → 50%
・コミュニケーション能力、技術力ともに○ → 5〜10%
・どちらも並み → 残り
現実はこんなところだろ。一握りの優秀な人間と、その他多くの
平均的な人々、そして箸にも棒にもかからない大量の使えない
ヤシでこの業界は構成されている
31 :
名無しさんに接続中…:02/04/26 01:00
業種をかえたら一人前
>>27 Oracle使うだけなら教えりゃ誰でも使える。
33 :
仕様書無しさん:02/04/26 01:01
>>28 じゃこの会社の従業員はほとんどが「フリー」だ(w
35 :
仕様書無しさん:02/04/26 01:03
部長にゲロぶっかけたら一人前に働いてると言える。
36 :
仕様書無しさん:02/04/26 01:06
SEってよく聞くけど、何の略?何する人?
>>36 ソフトウェアエンジニア。
コンピュータを管理する人。
39 :
仕様書無しさん:02/04/26 01:09
SEX ENGINEER
40 :
仕様書無しさん:02/04/26 01:09
>>30 PGと限定すれば
・コミュニケーション能力◎、技術力△ → 5%
・コミュニケーション能力×、技術力◎ → 15%
程度か。
41 :
仕様書無しさん:02/04/26 01:10
>>38 管理する人なら
Administratorかと。
リュック背負って出勤するようになったら
PGとして一人前。
>>41 アドミニストレータっていう呼び方、日本で普及してるの?
ダンボール造形が上手になったら
PGとして一人前。
一番事故るのは一番五月蝿い奴。
とゆうか、うちでここ5年間、欠陥製品社外流出させたのは、こいつと元派遣のCOBOLER課長の二人だけという状況。
どっちもよく喋る。
他の社員はあっても工場の検査でハネられるレベルの事故しかでてない。
47 :
仕様書無しさん:02/04/26 01:15
γ⌒/^^/^-
´,ゝ`/~ /~ /~ /⌒
〈(_| | |~ |~ /^ )
(/~ /~ /~ /~ ~ /~ /^\
()/)/~ /~ |~ .|~ |~ |~ /)
へ^〈,|,,、,,|,,、,,,,,|~,,,,、〈~,, 〈~ /⌒|)\
|:::::::∵∴∵∵∴∵∵∴∵∴∵∬∴ヽ
|∴∴∵∴∵∴∵∴∴∴∵∵∴∴∴ヽ
|∴∴∵∵∴∵∴∴∴∵∴∴:<'◎;, |
┌―. - '"-ゞ,◎>∴∵∴∵∵∴∵∵∵|
| | ̄.∴∴∵∵∴∵∴∴∵∴∵∵∴∵.|
ヽ.\{_∴∵∴∴∵∵∴ ( ○ ,:○∴∵ |
\\/.∴∴∴∵∴∵∵∵∵∵∵∵: |
\_ヽ.∴∵∴∴∵:_,-'ニニニヽ .∵|
.. ヽ.∴∵∴∵∴:ヾニ二ン" : |
\∴∵∵∵∴∴∵∵∴∵∴|
|∴∵∴∴∴∵∵∴∵:.|
|∴∵∵∴∵∴∵∴∴:./
ヽ\∵∴∵∴∴∵∴∵∵/
l `ー-::、∵∴∴∵∴:.'|ヽ.
:人 `ー――''''' / ヽ
これで一人前。
System Engineerという名称は和製英語なので注意。
海外では通じません。
49 :
仕様書無しさん:02/04/26 01:16
50 :
仕様書無しさん:02/04/26 01:19
>>48 嘘つけ。向こうの連中もちゃんと使うぞ。ただし、意味する
ところは多少違うがな。
>>48 通じますが。。。
ただ、そのあとに「何のシステム?」と聞かれます。
52 :
仕様書無しさん:02/04/26 01:19
ここ何のスレ?
53 :
仕様書無しさん:02/04/26 01:19
良く喋る奴って勢いで仕事してっからな。
良く喋るPGの場合、技術ないのを口で補う。
それはそれでいいとは思うが。
55 :
仕様書無しさん:02/04/26 01:23
>>50 SEは和製英語だ。
ちょっと調べりゃ教えてもらわなくても分からねぇか?
56 :
仕様書無しさん:02/04/26 01:24
>>53 喋る内容にもよるが、ちゃんと自己主張できない奴は
何やっても駄目だと思うぞ
57 :
仕様書無しさん:02/04/26 01:28
>>55 どこで調べたか知らんが、実際に向こうの連中も使うし、通じる。
>>55 だから。。。
日本は固有名詞として通じるけど(それだって怪しいもんだが)、海外じ
ゃだめだってだけの話だろ。
59 :
仕様書無しさん:02/04/26 01:37
以下の行でエラーとなった。理由を述べよ。
printf("Hello\n");
>>61 Helloに対する指示語がありません。
ピリオドがありません。
64 :
仕様書無しさん:02/04/26 01:53
>>62-64 想像力なさすぎ(w
想定できる現実的な回答がほしかった。。。
>61
そこだけ上司が書いた
72 :
仕様書無しさん:02/04/26 02:00
>>66 みんな敢えて分かってて書いているんだと思われ。
ネタなのかマジなのか明確にしてホスィ。
見た目の1行に捕らわれないことが大切だ。
バグの原因が、よーーーくみれば解る凡ミスだったって、結構
あるだろ?
76 :
仕様書無しさん:02/04/26 02:02
敢えて書いてるに決まってるだろうが。
77 :
仕様書無しさん:02/04/26 02:03
どうせ全角が混じってるとかだろ?
よく見てないから知らんけど。
printfの前のスペースに全角が混じってた。
正解見せられても、馬鹿にしたくなるような答えに違いない。
2chで質問したこと時代がそもそもの間違い
printfの仕様をイジッテたのを忘れてた。
>>83 「時代」じゃなくてたぶん「自体」だという間違い
時代は平成。
>>85 敢えてだと思うが、
アゲアシトルノハカコワルイ
89 :
仕様書無しさん:02/04/26 02:10
実務やるうえでは
>>63のが一番現実的な模範解答だろ?
何やってるのか、言語は何かを先に把握できなきゃ目先でこれは「Cのソースだ」とか「includeしてないかも」と妄想するだけ時間の無駄だから。
これで
#include <stdio.h> がないとか
main(){} がないとかだったら
みんな納得しないだろうな・・・
>>61 おもろい正解をキボンヌ
良スレになるのを期待して立てたのですが、
その兆しがないですね。
世間話スレではありません。
92 :
仕様書無しさん:02/04/26 02:12
コンパイルする際のメモリが足らなかった。
#define printf (゚Д゚)
そもそも電源起動すらしてなかった
紙に書いただけだった
97 :
仕様書無しさん:02/04/26 02:14
>>89 printf見た途端にC/C++だと推測できるだろ。
JavaScriptでprintfが動作しません!なんて言うDQNはいないと思われ
98 :
仕様書無しさん:02/04/26 02:14
コンパイル中に宇宙線を受けてレジスタのbitが反転した。
100 :
仕様書無しさん:02/04/26 02:16
そのソースをコピペしたやつが、
paintf...........つまらんな。
高卒が書いたソースだった。
放射能の影響で
qrintf...........つまらんな。
そのソースにはコメントが全く無かった。
―――ずばりエラーになった原因はこれだろうな。
ソースじゃなくて醤油だった
自作コンパイラの試験中にバグが現れた。
コンパイラではなくアセンブラ0Xだった
108 :
仕様書無しさん:02/04/26 02:27
この謎を解いた奴が
一人前か?
誰かほかに問題ない?
正直、飽きた。
コンパイルが会社更生法を適用したため。
次の文章を日本語にしなさい。
To be, to be, ten made to be.
111 :
仕様書無しさん:02/04/26 02:32
以前からそいつのことが気に入らなかったので、
トイレ逝ってる隙に、そこで落ちるように書き換えた。
#include <i_am.h>
#include <my_wife_is.h>
#include <allnight.h>
翌日どのような影響が出るか述べよ
113 :
仕様書無しさん:02/04/26 02:33
飛べ飛べ天まで飛べ
そうであるために、10はそうであるために作りました。
>110
飛べ、飛べ、10メイド飛べ
116 :
仕様書無しさん:02/04/26 02:35
timpo.hにバグがあって修正に時間かかる影響。
119 :
仕様書無しさん:02/04/26 02:38
次の文章を日本語にしなさい。
Free care cowards to become mid note.
120 :
仕様書無しさん:02/04/26 02:40
古池や 河ず飛び込む 水の音
PGにとって命の次ぎに大切なものを一つ挙げよ
128 :
仕様書無しさん:02/04/26 02:49
129 :
仕様書無しさん:02/04/26 02:54
130 :
仕様書無しさん:02/04/26 02:55
うわ、俺の手首痙攣してる
132 :
仕様書無しさん:02/04/26 02:59
>>123 息子(ティムポじゃなく男の子供)。
電磁波で精子のX染色体が死ぬ。
134 :
仕様書無しさん:02/04/26 03:05
PGが口にしてはいけない言葉をあげよ。
136 :
仕様書無しさん:02/04/26 03:07
138 :
仕様書無しさん:02/04/26 03:08
お前ら、面白くないぞ。疲れてるんなら早く寝れ。
140 :
仕様書無しさん:02/04/26 03:14
139>>邪魔田氏ね
141 :
仕様書無しさん:02/04/26 03:15
142 :
仕様書無しさん:02/04/26 03:16
バグはなくなりました。
143 :
仕様書無しさん:02/04/26 03:18
>>134 書籍(ネット上)で見たんで間違いありません。
144 :
仕様書無しさん:02/04/26 03:23
直りました X
直しました ○
148 :
仕様書無しさん:02/04/26 07:45
Cの標準ライブラリを全て自分で書けたら一人前だ
がむばれ
149 :
仕様書無しさん:02/04/26 08:42
>>134 「ぶっ殺すッ」
「殺した」なら使ってもイイ。
>>149 不用意にJOJOってはいけません。
JOJOる時は名前欄にJOJO風キャラ名が必要です。
152 :
仕様書無しさん:02/04/26 12:54
一人前じゃない俺が言うのもなんだけど、
ドラゴンボール全部集めたら一人前のような気がしないでもない。
153 :
仕様書無しさん:02/04/26 17:20
154 :
仁志 ◆15X1E7RU :02/04/26 18:32
おまえ達は一生半人前だ。
華麗な俺とは生まれた時点から決して覆すことの出来ない差があるんだからな。
しかもその差は刻々と開きつづけているんだからもうどうしようもないよな。
>>154 なんだ、どんどん離されてるって自覚あるんだ。
みんなはずっと先を行ってるので、もう追いつけないよ。
一生、半人前ってヤツは確かにいるけどね。
157 :
仕様書無しさん:02/04/27 00:59
ネタスレ判別プログラム
作って
159 :
仕様書無しさん:02/04/27 05:26
>>158 1の文が10行もしくは600バイト以上ある。
1の文の最後に「?」がついている。
開始から10レス以内に「クソスレ」「重複」「氏ね」「板違い」が2つ以上ある。
開始から10レス以内に1と同じIDが3つ以上ある
2争奪戦後の書き込みに10分以上の間隔がある。
1と2のIDが同じである。
開始〜100レス以内に「同意」が1つもない
日下部陽一の書き込みが全体の2%以上に及んでいる
160 :
159、追加:02/04/27 05:29
1の文が1行で30バイト以下である
問題:人間の絶頂感を画面上で高速表示するDirectPinkに必要なシステム
用件を述べよ。
162 :
仕様書無しさん:02/04/27 07:14
クイックソートのプログラム作れ
標準ライブラリを使うかデータ構造を再検討するので作る必要はないです。
164 :
仕様書無しさん:02/04/27 09:45
>>158 1つのレスの平均のデータサイズは50バイト以下である。
165 :
仕様書無しさん:02/04/27 09:58
#define getchar() fgetc(stdin)
#define putchar(c) fputc((c),stdout)
>166
クソスレ全部に日下部が書き込んでいるのかよ!?
168 :
仕様書無しさん:02/05/17 15:36
1日1うんこ。
便秘なので1日1うんこは無理です
せいぜい3日に1うんこ
171 :
仕様書無しさん:02/05/27 18:33
アプセトネデブ覚えろ。
172 :
仕様書無しさん:02/05/27 20:01
質問。
マジで。
質問してくれマジで。
「分からなかったんでこうしてみました」
て め ぇ 何 様 だ ! ! ? ?
176 :
仕様書無しさん:02/05/27 22:02
OSI7?
177 :
仕様書無しさん:02/05/28 02:34
Webを漁ってて見つけた問題。
> 1. 次のCプログラムに一行追加し、このコード自体を標準出力に吐くプログラムにせよ(Unix中級 ○5点)。
>
> 1 #include <stdio.h>
> 2
> 3 int main()
> 4 {
> 5 int C = 0;
> 6 if (C++ < C) /* compare C with C++ */
> 7 printf("C > C++\n");
> 8 return 0;
> 9 }
> 2. 上のプログラムの2行目を変更し、C > C++ と表示するようにせよ(C言語初級○2点)
>
> 3. 2でマクロを使わない解を示せ(C言語中級○10点)
>
> 4. C++の場合は他に解はあるか(C++言語初級○5点)
これは思いっきり副作用を伴うんじゃあ・・・・(´Д`;)
179 :
仕様書無しさん:02/05/28 02:47
1. 冒頭に echo << __END
2. 3. 4. 変更しなくても、すでにそうなってるじゃん
>>177 面白いんだけど、今までに一度も書いたことのない&これからも書くことがない
コードで中級とか初級とか言われても・・・。
#!/bin/sh
echo << '
#include <stdio.h>
int main()
{
int C = 0;
if (C++ < C) /* compare C with C++ */
printf("C > C++\n");
8 return 0;
9 } '
変な問題だね。
元作者の意図してたのはこっちだったのかな?
#include <stdio.h>
int main()
{
int C = 0;
if (C++ > C) /* compare C with C++ */
printf("C < C++\n");
return 0;
}
いや、C++ > C は 1 > 1だから偽になる。故になにも表示されない。
185 :
仕様書無しさん:02/05/29 02:37
そういうわけで、2は #define > >= だな
3 はわからん。だれかわかるか?
>>177 1.
>>179 2. 2行目を「int main(){ /*」に変更
3. 2行目を「int main(){ /*」に変更
4. 何に対する解か不明。問題不適格。よって全員正解扱い
187 :
仕様書無しさん:02/05/29 15:27
>>186 おお、そういうことか。わかってしまえばなんてことないが、
ちょっと目が覚めた気分。
>>188 「qsortの実装はクイックソートでなければならない」って規定されてたっけ?
>190
そう。man qsortにも書いてないし。
192 :
仕様書無しさん:02/06/01 00:06
中途採用の面接試験で出した問題だけど、誰一人正解者がいなくて
人事部と一戦あった問題です。(爆
ある配列Aに乱数が幾つか入っています。
その中から x 番目に大きい(小さい)数を求める
関数を作成しなさい。
int function(String hoge [],int x){
int b=0,cnt=0;
String boke = new String[hoge.lenth];
if(hoge.lenth >= x)
for (int i=0; hoge.lenth-1 > i; i++)
if( i > x)exit for;
for (int j=i+1; hoge.lenth > i; i++){
if( hoge[i] > hoge[j] ){
b = hoge[i];
hoge[i] = hoge[j];
hoge[j] =b ;
}
}
return hoge[x];
}
>ある配列Aに乱数が幾つか入っています。
いくつだよ。-1が終端だとかいわねーよな。
195 :
仕様書無しさん:02/06/01 00:51
あーおれから問題ね。
πを求めよ、桁数はHDDがぶっ壊れるまでね。
はい、どぞ
196 :
仕様書無しさん:02/06/01 00:55
求めました!
やったーうちのはHDD40MBだからラッキー
void main()
{
printf( "3.1415926535897932384626433832795" ) ;
for(;;) printf( "%c", '0'+(rand()%10) ) ;
}
199 :
仕様書無しさん:02/06/01 01:15
>192
どうよ。
#include<stdio.h>
int pussy(int* Hairetu,int x){
int suck=0;
int r=0;
for(int i=0;Hairetu[i];i++){
for(int j=0;Hairetu[j];j++){
if(Hairetu[i]<Hairetu[j]){//いれかえ
int t=0;
t=Hairetu[j];
Hairetu[j]=Hairetu[i];
Hairetu[i]=t;
}
}
}
return Hairetu[x-1];
}
int main(){
int H[10]={3,2,1,5,9,8,7,6,4};
int r=pussy(H,2);
printf("%d",r);
return 0;
}
>>177 2の別解:
#define return printf("C > C++");
202 :
仕様書無しさん:02/06/01 01:35
>201
ほほう。一応これはこれで動作するのですが、どういうところに自由さを感じられないのか教えてもらいましょうか。
203 :
仕様書無しさん:02/06/01 01:40
おっぱいが一個。おっぱいが二個。おっぱいが三個。
> おっぱいが三個。
あぁ、「トータルリコール」に出てた、あの。
205 :
仕様書無しさん:02/06/01 01:45
>203
すみませんがわかりません。H[10]のことを言ってるのでしょうか。mainの中身はあくまでサンプルとして見てください。
>201
関数名といいツッコミどころマンサイの方が適切かも(w
>>202 > 一応これはこれで動作するのですが
ほほう。
208 :
仕様書無しさん:02/06/01 01:55
言いたいことがあるならハッキリ言えよ。俺、陰口言われるのが最高むかつくんだよな。
おまえらかわいいなぁ
食べちゃいたい。
>199
ま、識別子がなめてるのは別として
1.suck、rが使用されていない
2.配列に対するループの終了条件が環境依存
3.受け取った配列を勝手にソートしている
つーのはイヤーン
212 :
仕様書無しさん:02/06/01 05:07
>>192 ほれ。
#include <algorithm>
#include <functional>
#include <vector>
#include <list>
using namespace std;
template <typename TYPE, typename BinaryPredicate>
TYPE xmax(const vector<TYPE>& array, size_t x, BinaryPredicate comp)
{
typedef vector<TYPE>::const_iterator vctiterator;
typedef list<TYPE>::iterator lstiterator;
if(array.size() < x)
return *max_element(array.begin(), array.end(), comp);
list <TYPE> large;
vctiterator itArray = array.begin();
large.push_back(*itArray);
for(++itArray; itArray != array.end(); ++itArray)
{
for(lstiterator itLarge = large.begin();
itLarge != large.end(); ++itLarge)
{
if(comp(*itArray, *itLarge))
break;
}
large.insert(itLarge, *itArray);
if(large.size() > x)
large.pop_back();
}
return *large.rbegin();
}
>>192 (2354, 924, 524383, 2954, 625, 15, 7754, 1, 2365, 56564569)
正解:15
>>211 > 2.配列に対するループの終了条件が環境依存
いや、動くのが奇跡みたいなモンでしょ。
あとついでに言えば、無駄に回り過ぎ。
i<=j の時に Hairetu[i] と Hairetu[j] を比較しても意味無いし、
x 番目以降のソートまでする必要もないよ。
(しかし、こんな問題で正解者がいなかったとは…トホホン)
バカ違うよ!i>=jだよ。
俺こそトホホンだったな…
MSDNのサンプル見てしこります。
218 :
仕様書無しさん:02/06/01 13:01
>213
テンプレとSTL使うのは邪道だ!C言語だったらどうするんだ!
219 :
仕様書無しさん:02/06/01 14:00
>>199 >int main(){
>int H[10]={3,2,1,5,9,8,7,6,4};
あれ、この場合の H[9] って0に初期化される事が
保証されていたっけ?
ただし、この質問は
>>199に聞いている訳ではないよ。
誰かまともな奴、教えてくれ。
>>219 VBで同じ内容なら0に初期化は保証されてて、
JavaScriptの場合は、未定義値になります。
Cの場合はどうなんだろうな?
Cも未定。
static なら0。
222 :
仕様書無しさん:02/06/01 14:25
>>221 static じゃなけりゃコンパイルエラー。
とか言ってみるテスト
>219
H[9]でなくてH[10](というかHから数えて11個目)でしょ?
当然未定だけど。
つか、
>>199は技術的なことより、そのあとの「自分は間違ってねーよ」てその自信がどっからくるのか不思議だよ。
もし現役だったら今すぐやめてホスイ。
よくよく見たら要素9個しか定義してなかったのな。
cygwinのgccで試したら初期値以外は0だたよ。
#include <stdio.h>
int main(){
int a[1000]={1}, i;
for(i=0;i<1000;i++)printf("%d-",a[i]);
}
>>213 やっぱコードをウプするときは
s/\t/ /g;
するべきでね。
プログラム系の板では<pre>タグ可にしてもらえないものか・・・
STLつかってもいいってわかってれば、もっとマシなもの組めたんだよ。
最初から言えって。この場合、出題者の説明が腐ってんだろが。
229 :
重箱の隅をブッ刺す:02/06/01 19:12
>>213も
>>199も、
>ある配列Aに乱数が幾つか入っています。
>その中から x 番目に大きい(小さい)数を求める
>関数を作成しなさい。
の要件を満たしてないぞ。
Cで組んでみた。
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct ___intlist_t
{
size_t index;
struct ___intlist_t* p_next;
struct ___intlist_t* p_prev;
} intlist_t;
static size_t xmax(
const void* v_array, size_t elemsize,
size_t numelem, size_t x, int (*fp_comp)(const void*, const void*))
{
const char* array = (const char*)v_array;
intlist_t root; // 最初の要素を保持するノード
intlist_t* p_buffer; // 作業用のバッファ
size_t i;
// メモリの一括確保
p_buffer = (intlist_t*)calloc(x, sizeof (intlist_t));
if(p_buffer == NULL)
exit(1);
// 初期化
root.index = 1; // バッファに保存した要素の数
root.p_next = &p_buffer[0]; // 最初の要素
root.p_prev = root.p_next; // 最後の要素
// 最初の要素の初期化
root.p_next->index = 0;
root.p_next->p_next = &root;
root.p_next->p_prev = &root;
for(i = elemsize; i < elemsize * numelem; i += elemsize)
{
intlist_t* p_elem;
intlist_t* p_insert;
for(p_elem = &root; p_elem->p_next != &root; p_elem = p_elem->p_next)
{
// array[i] > array[p_elem->p_next->index]
if(fp_comp(&array[i], &array[p_elem->p_next->index]))
break;
}
if(root.index < x)
{
p_insert = &p_buffer[root.index++];
}
else
{
// バッファにある全てのものより小さい時は次に進む
if(p_elem->p_next == &root)
continue;
// 最後の要素を削除するのではなく、再利用する
p_insert = root.p_prev;
if(p_elem->p_next != p_insert)
{
p_insert->p_prev->p_next = &root;
root.p_prev = p_insert->p_prev;
}
}
p_insert->index = i;
if(p_elem->p_next != p_insert)
{
// p_elem : p_insert : p_next
intlist_t* p_next = p_elem->p_next;
p_elem->p_next = p_insert;
p_insert->p_next = p_next;
p_insert->p_prev = p_elem;
p_next->p_prev = p_insert;
}
}
// 結果の退避とメモリの開放
i = root.p_prev->index / elemsize;
free(p_buffer);
return i;
}
長げーよ
ハゲドー
こんなもんか?
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int find(const int *A, int size, int x)
{
int i, v = INT_MIN;
for (; x > 0; x--) {
int min = INT_MAX;
for (i = 0; i < size; i++)
if (A[i] > v && A[i] < min)
min = A[i];
v = min;
}
return v;
}
int main(int argc, char **argv)
{
int i, n = 0, A[100];
for (i = 2; i < argc; i++)
A[n++] = atoi(argv[i]);
printf("%d\n", find(A, n, atoi(argv[1])));
}
sub nth_max {
my( $n, @a ) = @_;
@a = sort { $b <=> $a } @a;
return @a[$n];
}
sub nth_min {
my( $n, @a ) = @_;
@a = sort { $a <=> $b } @a;
return @a[$n];
}
my( @a, $i );
srand( );
for( $i=0; $i<10;++$i ) { push @a, int(rand()*100); }
print "\@a=@a\n";
print "3rd_max of \@a = " . nth_max( 2, @a );
Perl かよ!。HSP で書いて。おながい。
同じ値がある場合を考慮しなきゃだめ!
PL/SQLを使ってもいいのでしょうか?
CREATE FUNCTION FNC_ARRAY (X IN NUMBER) RETURN NUMBER IS NUM2
BEGIN
CREATE TABLE TBL_ARRAY( NUM NUMBER);
CREATE VIEW VW_ARRAY AS SELECT NUM FROM TBL_ARRAY ORDER BY NUM;
INSERT を配列数分
SELECT NUM INTO NUM2 FROM VW_ARRAY WHERE ROWID=X;
DROP TABLE TBL_ARRAY;
END;
みたいに書けばいいと思うのだが
今、手元にPL/SQLがないので試せない
#! /usr/local/env ruby
#A=[ 1244,35,4574,5687, ...] とあらかじめ定義されていると仮定
def answer_of_192(x)
A.sort[x]
end
間違えた。正しくはこっち。
#! /usr/local/env ruby
#A=[ 1244,35,4574,5687, ...] とあらかじめ定義されていると仮定
def answer_of_192(x)
h= {}
A.each{ |e| h[e]= true }
h.keys.sort[x]
end
>>193 何かおかしくない?
乱数混ざってるんだよ。
Cでも作ってみた。エラーのチェックははしょってる。
n番目に大きい方も同様なのでこれも省略。
#include<stdio.h>
#include<stdlib.h>
int nth_min( size_t n, int *a, size_t size ) {
int r, *l, *s;
size_t i, ls=0, ss=0, es=0;
if( size == 1 ) return *a;
l = (int*)malloc( sizeof(int)*size );
s = (int*)malloc( sizeof(int)*size );
es++;
for( i=1; i<size; ++i ) {
if ( a[i] == a[0] ) es++;
else if( a[i] < a[0] ) s[ss++]=a[i];
else l[ls++]=a[i];
}
if ( n < ss ) r = nth_min( n, s, ss );
else if( n < ss+es ) r = a[0];
else r = nth_min( n-ss-es, l, ls );
free(l);
free(s);
return r;
}
int main( )
{
int a[] = { 3,5,2,7,5 };
printf( "1st min of a = %d\n", nth_min( 0, a, sizeof( a )/sizeof( a[ 0 ])));
printf( "2nd min of a = %d\n", nth_min( 1, a, sizeof( a )/sizeof( a[ 0 ])));
printf( "3rd min of a = %d\n", nth_min( 2, a, sizeof( a )/sizeof( a[ 0 ])));
printf( "4th min of a = %d\n", nth_min( 3, a, sizeof( a )/sizeof( a[ 0 ])));
printf( "5th min of a = %d\n", nth_min( 4, a, sizeof( a )/sizeof( a[ 0 ])));
}
も一つ。シェルスクリプト。
#!/bin/sh
# pickup nth max num
# $1=file, $2=n
nth_max( ) {
RESULT=`sort -n -r $1 | head -$2 | tail -1`
}
# pickup nth min num
# $1=file, $2=n
nth_min( ) {
RESULT=`sort -n $1 | head -$2 | tail -1`
}
touch /tmp/$$
echo "3" >> /tmp/$$
echo "5" >> /tmp/$$
echo "2" >> /tmp/$$
echo "7" >> /tmp/$$
echo "5" >> /tmp/$$
nth_max /tmp/$$ 1
echo "1st max: $RESULT"
nth_max /tmp/$$ 2
echo "2nd max: $RESULT"
nth_max /tmp/$$ 3
echo "3rd max: $RESULT"
nth_max /tmp/$$ 4
echo "4th max: $RESULT"
nth_max /tmp/$$ 5
echo "5th max: $RESULT"
rm -f /tmp/$$
245 :
仕様書無しさん:02/06/02 11:20
「問題」
世界の人口が、地球の供給できる食糧の量を超える年月日を
正確に予測するプログラムを書け。
(提出期限、3日以内)
247 :
仕様書無しさん:02/06/02 11:29
>>245 あの〜、人口は食料供給量できまります。
食料供給量を越えた人口はどんどん死にますから、つねに人口は食料供給量以下です。 逆に食料供給量の伸びに従い、人口は増えます。
も し か し て ネ タ で す か ?
248 :
仕様書無しさん:02/06/02 11:51
>>245 かなり大雑把なので、こっちでなんでも決めていいんだな?
>243
あのさあ。サイズが最初っからわかってれば苦労なんてしないんだよ。
サイズを引数にとるのは邪道だね。
しかもsizeofなんて、もし動的な配列だったら判断できないだろが。駄目。
しーん。無視。
お前らレベル低いねw
またまた無視・・・
(俺ってやに必死なってんだろ?頭おかしくなったなぁ、、)
256 :
仕様書無しさん:02/06/02 15:17
std::nth_element
さらに無視。
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩、仕事中になにしてるんですか?
\
 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ∧ ∧ < 「無視無視、さらに無視……」っと。
( ・∀・) ( ゚Д゚) \____________
 ̄ ̄∪ ̄∪ ̄(つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO | \
 ̄ ======= \
260 :
仕様書無しさん:02/06/02 17:28
問題
www.ioccc.orgのコードを誰にでも読めるようにするプログラムを書け。
これができたら巣立てってよし。
# gcc a.cpp
# a.out
2033/09/21
#
>262
こちらの意図していた回答は>243のアルゴリズムです。
ですから、私の立場から見た場合
第一候補としては>243になるでしょう。
>263
うそをつけうそを!そんなヌルイ解答要求するようじゃ先は長くないな!
>>243みたいなコードを見ると、あーCやりたくねーなー
と思ってしまう。
199のが一番見やすい。いや199じゃないよ、俺は。
267 :
仕様書無しさん:02/06/02 21:57
199必死だな(藁
あのsizeofやらなんやらは何なの?malloc?free?何それ?って感じ。
ついでに言うなら++i。
java一生コーシィ-止まり。
271 :
仕様書無しさん:02/06/02 23:20
では次の問題
歴代および現役を含むモー娘。全員の名前を処女である確率の高い順に
表示するプログラムを書け。
(制限時間1時間)
>>265=268
ほれ、君の好きなjava版だ。
Vector等使わず配列なのはわざとだから念のため。
int nth_min( int n, int a[], int size ) {
int l[], s[];
int r, i, ls=0, ss=0, es=0;
if( size == 1 ) return a[0];
l = new int[size];
s = new int[size];
es++;
for( i=1; i<size; ++i ) {
if ( a[i] == a[0] ) es++;
else if( a[i] < a[0] ) s[ss++]=a[i];
else l[ls++]=a[i];
}
if ( n < ss ) r = nth_min( n, s, ss );
else if( n < ss+es ) r = a[0];
else r = nth_min( n-ss-es, l, ls );
return r;
}
int nth_min( int n, int a[] ) {
return nth_min( n, a, a.length );
}
10 randomaze:defint a-z
20 dim a(10),b$(10): (名前をb$へ代入する処理がここに入る)
30 for i=0 to 10:a(i)=i:next
40 for i=0 to 100
50 a=rnd(1)*11:b=rnd(1)*11
60 tmp=a(b):b$(a)=a(b):a(b)=tmp
70 next
80 for i=0 to 10
90 print b$(a(i))
100 next
>>271 追加
言語は特に指定しない。HSPでも可。ただしru*yは不可。
275 :
アマグラマ1号 ◆r6Wx8cCc :02/06/03 00:10
こんなもんでええんでしょか。
int NthMax(
const void* vpA, int nElemSize,
int nNumElem, int x, int (*fpComp)(const void*, const void*))
{
const char* pA = (const char*)vpA;
int iPrev = -1;
if(x < nNumElem)
{ x = nNumElem; }
while(x > 0)
{
int iMax = -1;
int nMax = 0;
int i;
// pA[iMax] < pA[i] && pA[i] < pA[iPrev]
for(i = 0; i < nNumElem * nElemSize; i += nElemSize)
{
int bLess = (iPrev == -1 || fpComp(&pA[i], &pA[iPrev]) < 0);
if(iMax == -1)
{
if(bLess)
{ iMax = i; nMax = 1; }
}
else
{
int fComp = fpComp(&pA[iMax], &pA[i]);
if(fComp < 0 && bLess)
{ iMax = i; nMax = 1; }
else if(fComp == 0)
{ nMax++; }
}
}
iPrev = iMax;
x -= nMax;
}
return iPrev / nElemSize;
}
オブジェクトの全機能を羅網したクラスを作れ。
>>276 それ愚問。オブジェクトの全機能はクラスのみでは実装無理。
int printf();
int main()
{
int a = 5 ;
printf ( "%c" , ( ++ a + a -- ) [ "ABCDEFGHIJKLMN" - a ] ) ;
}
[EOP]
STDOUT ?
ゴメソ
3通りある・・・
284 :
仕様書無しさん:02/06/05 23:24
評価順は次の6通りの可能性があるので...
++a → a-- → ["..." - a] → (6+6)["..." - 5] → "..."[7] → H
a-- → ++a → ["..." - a] → (5+5)["..." - 5] → "..."[5] → F
++a → ["..." - a] → a-- → (6+6)["..." - 6] → "..."[6] → G
a-- → ["..." - a] → ++a → (5+5)["..." - 4] → "..."[6] → G
["..." - a] → ++a → a-- → (6+6)["..." - 5] → "..."[7] → H
["..." - a] → a-- → ++a → (5+5)["..." - 5] → "..."[5] → F
F,G,H の3通りだ。
こういうコードの結果が不定になって、
実際どういう風にまずいのかをこうやって見ることは
「そんなコード書くな (゚Д゚)ゴルァ!!」と言うだけよりは
それはそれで意味のあることなのやもしれぬのぅ。
正しい答えに気付いたの
>>283 なので僭越ですが
出題者として一応・・・
>>284 正解です
それでわ
>>278 おーい、評価順にまったく関係なく未定義なんですが。
つまり、コンパイラが一つの式の中で++aとa--を使っていることを
認識した時点で鼻から悪魔が出るコードにコンパイルしても正しい動作なんですが。
ついでに、void main();のとき、core吐くようにしといてくれ。