約 5,030,035 件
https://w.atwiki.jp/pclinuxtips/pages/17.html
(1)Server CentOS5.5 x64 netinst CDから http network installする (2)不要デーモンを停止 /etc/init.d/yum-updatesd stop (3) 以下を、chkconfig で起動しないようにする bluetooth, cups,gpm,hidd,irda,isdn,lvm2-monitor,mdmonitor,nfs,nfslock,pcscd,sendmail, smartd,vncserver,yum-updatesd (4) yum install yum-fastestmirror を実行しておく (5) 現在のkernel 2.6.18-194.el5 x64 yum -y update を実行。 2.6.18-194.3.1.el5 (6) CentOS5.5_x64の場合、Display driverのインストール Xの解像度がうまく設定できない。最初はVGA(640x400)になっている。 下記よりATI Display Driverをダウンロードし、インストールすると解消できます。 http //support.amd.com/us/gpudownload/Pages/index.aspx 手順Linux x86_64- Radeon- ATI Radeon X1xxx Series [GO] http //support.amd.com/us/gpudownload/linux/Legacy/Pages/radeon_linux.aspx?type=2.4.1 product=2.4.1.3.12 lang=English Xにrootでログインし、 ダウンロードしたファイルに sh ati-driver-installer-9-3-x86.x86_64.run インストーラが起動します。 インストーラ・ダイアログの下端にあるcancel/OKボタンが見えないが、左がcancel、右がOKなので、TABキーで移動させてなんとか実行する。 自動インストールを選択、終了後、システムを再起動します 参考 http //wiki.centos.org/AdditionalResources/HardwareList/AtiDriver ここからネットインストールサーバーとして必要なパッケージインストール&設定 (7) # yum install tftp-server dhcp # vi /etc/xinetd.d/tftp disable = yes -- no に変更 # cd /tftpboot # cp /usr/lib/syslinux/pxelinux.0 . # mkdir centos55_x64 # cd centos55_x64 vmlinuxとinitrd.imgを下記~から取得する # wget http //ftp.iij.ad.jp/pub/linux/centos/5.5/os/x86_64/images/pxeboot/~ ブート用設定ファイルを作成します。 # mkdir /tftpboot/pxelinux.cfg # vi /tdtpboot/pxelinux.cfg/default default centos55_x64 prompt 1 timeout 15 label centos55_x64 kernel centos55_x64/vmlinuz append load initrd=centos55_x64/initrd.img noipv6 devfs=nomount tftpserverの再起動 # /etc/init.d/xinetd restart インストールパッケージを配置します DHCPの設定 dhcpサーバーの設定ファイルを見ると [root]# cat /etc/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample とコメントだけです。そのとおりにサンプルをコピーして編集します。 [root]# cd /etc [root]# cp /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample [root]# cat dhcpd.conf.sample dhcpd.conf [root]# vi dhcpd.conf ddns-update-style interim のコメントアウトをはずす 本マシンのIPを192.168.0.1/255.255.255.0に設定 max-lease-timeの下に、次の行を追加 netxt-server 192.168.0.1; filename "pxelinux.0"; その他はsampleのまま使用 eth0側のみdhcpサービスを提供する設定 # vi /etc/sysconfig/dhcpd DHCPDARGS=eth0 http //labs.unoh.net/2007/11/linux_1.html http //labs.unoh.net/2007/12/linux_2.html 開けるport •DHCP 67 udp •TFTP 69 udp •PXE 4011 udp # mkdir /mnt/iso ←マウントポイント作成 # mount -t iso9660 -o loop hogehoge.iso /mnt/iso # mkdir /var/www/html/iso # cp (isoイメージ内のファイル) /var/www/html/iso kickstart設定ファイル # cp /root/anaconda-ks.cfg /var/www/html/ks.cfg # vi ks.cfg ~ install url --url http //192.168.0.1/iso -- httpインストール ~ selinux --disable ~ reboot %packages %post chkconfig yum-updatesd off chkconfig isdn off chkconfig irda off chkconfig cups off chkconfig smartd off chkconfig pcscd off # user setting useradd user kickstartを使用するための設定 # vi /tdtpboot/pxelinux.cfg/default default centos55_x64 prompt 1 timeout 15 label centos55_x64 kernel vmlinuz append ks=http //192.168.0.1/ks.cfg noipv6 load initrd=initrd.img devfs=nomount
https://w.atwiki.jp/12kokuki/pages/62.html
閲覧状態マスタ(M_BROWSE_STATUS) 閲覧状態を定義するマスタテーブル。 テーブル定義 PK 名称 データ型 NOT NULL 内容 ● ID INTEGER ○ NAME TEXT ○ 名称 LONG_NAME TEXT ○ 長い名称 CREATE文 CREATE TABLE [M_BROWSE_STATUS] ( [ID] INTEGER NOT NULL ,[NAME] TEXT NOT NULL ,[LONG_NAME] TEXT NOT NULL ,PRIMARY KEY(ID) ); 登録データ一覧 ID NAME LONG_NAME 0 閲覧可 全コンテンツ閲覧可 7 一部閲覧不可 一部コンテンツ閲覧不可 8 一部閲覧可 一部コンテンツ閲覧可 9 閲覧不可 全コンテンツ閲覧不可 初期設定用INSERT文 INSERT INTO M_BROWSE_STATUS(ID,NAME,LONG_NAME) VALUES(0,'閲覧可','全コンテンツ閲覧可'); 以下、VALUES以降のみ掲載 VALUES(7,'一部閲覧不可','一部コンテンツ閲覧不可'); VALUES(8,'一部閲覧可','一部コンテンツ閲覧可'); VALUES(9,'閲覧不可','全コンテンツ閲覧不可'); 2010/09/06 10 53 09
https://w.atwiki.jp/eris_wiki/pages/31.html
【編集】 β4 ERIS使用のQ&A定義関係について。 画面デザイン関係について。「メッセージウィンドウ・後ろ(透過部分)」透過表示の透過率を変更するには? ユーザースクリプト(シナリオ)関係について。ERISのバージョンを更新したら、変数に対してエラー表示が出ました。 スプライト画像個別の明度彩度について。 ¥AUTOCRP(0)の使用、β4でのノベルモードについて。 β3にあった、立ち絵の右・左配置の方法について。 UIについて。セリフ表示中、一時的に特定のボタンを非表示にするには? キャラのセリフ表示について、「」などを付けずに表示するには? 主人公の名前入力や入力された主人公の名前を使う方法 β3の「¥TITLE.STARTLABEL( ~ )」について。 配布準備について。 その他について。ウィンドウで文字の表示途中でバックログを見ると、バックログのテキストも途中までになってしまうのですが? システム効果音について 「yu-risコンパイラが無いため中止します。」と出る。 大幅変更・加筆履歴コメント β4 ERIS使用のQ&A ERIS関係のQ&Aの情報。 定義関係について。 画面デザイン関係について。 「メッセージウィンドウ・後ろ(透過部分)」透過表示の透過率を変更するには? Q: メッセージウィンドウを枠線なしの黒の透過ウィンドウにしたいと思っています。 それで、メイン画面設計で「メッセージウィンドウ」を非表示にし、「メッセージウィンドウ・後ろ(透過部分)」に画像を当てはめたのですが、自動的に透過表示になりますよね? この透過率を変えたいのですが、どこをいじればいいのでしょうか? A: UserDefine\メイン定義.txt 内の、「@T(36,01)=128」と記述されている箇所です。この値を 0~256 の範囲で変えていただくことでメッセージウィンドウの透過度が変わります。 ただし、この値はセーブデータに記録されるものなので、反映させるにはセーブデータを一度消してください。 ユーザースクリプト(シナリオ)関係について。 ERISのバージョンを更新したら、変数に対してエラー表示が出ました。 Q: ERISのバージョン「UserDefine / UserDesign / Eris」フォルダーのみ更新した後、YU-RIS起動直後変数に対してエラー表示が出ました。 A: Saveフォルダーのデータと最新ERISが不一致を起こしている可能性があります。Saveフォルダーを削除して試して下さい。 スプライト画像個別の明度彩度について。 Q: β4でスプライト個別の明度彩度の調整は出来ますでしょうか? 具体的にいうと、夜の背景に立ちキャラを立てる場合に明度彩度を調節して立ちキャラを暗めにしたり出来ればと考えているのですが。 A: 個別設定できる機能は今のところデフォルトでは無いです。 ただ、もし立ち絵簡易マクロをお使いであれば、それを少し改造すれば無理矢理ですが可能です。 UserDefine\macro.txt で、通常は下のような定義になっていますが、 macro[name="優理" str="¥_ST( YUU ,$_M,$_M2,$_M3,$_M4,$_M5)" ] macro[name="枝理" str="¥_ST( ERI ,$_M,$_M2,$_M3,$_M4,$_M5)" ] これとは別に、「¥MD(0x505070)」と「¥MD()」の二つを「¥_ST(~)」に挟む形で追加して、 macro[name="優理N" str="¥MD(0x505070)¥_ST( YUU ,$_M,$_M2,$_M3,$_M4,$_M5)¥MD()" ] macro[name="枝理N" str="¥MD(0x505070)¥_ST( ERI ,$_M,$_M2,$_M3,$_M4,$_M5)¥MD()" ] というような定義を追加してください。そしてスクリプト上で、 ¥優理N(YUU_1A01, 500) と、記述していただければ、立ち絵だけ明度がかかった状態にできます。 ¥AUTOCRP(0)の使用、β4でのノベルモードについて。 Q: 現在β4にて「¥AUTOCRP(0)」を使用してノベルモードで制作しているのですが、一度シナリオ中にてセーブし、そしてロードしてみると「¥AUTOCRP(0)」が無効になってしまっているみたいなのです。 予想では、ロードしたシナリオ以前に記述した「¥AUTOCRP(0)」の、宣言は読み取ってくれないという感じだと思うのですが……これは、何か回避する方法があるのでしょうか。 それと、もう一つに、これもβ4による「¥AUTOCRP(0)」のノベルモードについてなのですが、このモードにてのページ内で「¥R」を使った場合でバックログを見た時に、ページの台詞は登録表示されるのですがボイスの方は登録されませんでした。 例えば ¥VO(YUU_001)優 ¥R「こんにちは」¥CP とするとプレイ中は問題なく音声は再生し、バックログにて台詞の文章は登録されるのですが、音声はログ登録されていません(登録のアイコン♪も表示されてません)。 これは、どういう風に記述すればボイスをバックログで再生出来る様登録出来るのでしょうか。 A: 症状を確認しまして、それぞれ修正を試みたのですが…… どうもテキスト処理の仕方がよろしくなくて、ちょっと上手くいかずにいまだ修正中です。 もう少々だけお待ち下さい。 β3にあった、立ち絵の右・左配置の方法について。 Q: 立ち絵の右・左の配置の仕方なのですが、どうすれば良いんでしょうか? β3では、R,Lを打てば自動で配置してくれたかと思うのですが、β4でも、それに近いモノがあるんでしょうか? 今はやり方がわからないので、立ち絵の命令前に ¥SP.ZX(200, 1) という命令を入れて、力ずくで表示させています。ただこうすると、スキップを押して飛ばすと、どうしても真ん中に表示されてしまいます。 A: まず、¥SP.ZX(200, 1) と指定しても一瞬真ん中に表示されてしまう問題については、 ¥SP.ZX(200, 0) と、0 を指定してもらうことで解決できるかと思います。もしくは、 ¥SP.2X(200, 200, 0) と、指定することでも可能です。 それと、位置の指定方法についてですが、β4では完全に座標指定のみとなってしまいました。すみません。 ただ、もしもカメラの移動機能を使わないのであれば、マクロを使えばβ3に近い形で記述することも不可能ではなさそうなので、次回バージョンアップ時に実装してみようと思います。 ¥優理(YUU_1A01, 500, ¥P17) 恐らくこんな記述になります。いましばらくお待ち下さい。 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ver0.408/0.19 にて立ち絵簡易マクロ機能を拡張し、座標も一緒に指定できるようになりました。 この機能と、置換マクロ機能とを組み合わせて、β3に近い書き方ができるようになりましたのでご説明します。 まず、立ち絵簡易マクロですが、座標指定が可能になり、 ¥優理(ファイル名, 時間, 座標X, 座標Y, 座標Z) という感じに書けるようになりました。例えば、 ¥優理(YUU_1A01, 500, 300) と書くと、X=300の位置を中心に立ち絵が表示されるようになります。 つぎに、β3に近い書き方が出来るように、UserDefine\macro.txt 内で、以下のようにマクロを定義します。 macro[name="PL" str="-200 " ] macro[name="PM" str=" 0 " ] macro[name="PR" str=" 200 " ] macro[name="P1" str="-200-66-22" ] macro[name="P2" str="-200-66 " ] macro[name="P3" str="-200-66+22" ] macro[name="P4" str="-200 -22" ] macro[name="P5" str="-200 " ] macro[name="P6" str="-200 +22" ] macro[name="P7" str="-200+66-22" ] macro[name="P8" str="-200+66 " ] macro[name="P9" str="-200+66+22" ] macro[name="P10" str=" 0-66-22" ] macro[name="P11" str=" 0-66 " ] macro[name="P12" str=" 0-66+22" ] macro[name="P13" str=" 0 -22" ] macro[name="P14" str=" 0 " ] macro[name="P15" str=" 0 +22" ] macro[name="P16" str=" 0+66-22" ] macro[name="P17" str=" 0+66 " ] macro[name="P18" str=" 0+66+22" ] macro[name="P19" str=" 200-66-22" ] macro[name="P20" str=" 200-66 " ] macro[name="P21" str=" 200-66+22" ] macro[name="P22" str=" 200 -22" ] macro[name="P23" str=" 200 " ] macro[name="P24" str=" 200 +22" ] macro[name="P25" str=" 200+66-22" ] macro[name="P26" str=" 200+66 " ] macro[name="P27" str=" 200+66+22" ] そうすることで、立ち絵簡易マクロが以下のように記述できるようになります。 ¥優理(YUU_1A01, 500, \PL) //左の位置に表示される ¥優理(YUU_1A01, 500, \PM) //中央の位置に表示される ¥優理(YUU_1A01, 500, \PR) //右の位置に表示される ¥優理(YUU_1A01, 500, \P26) //P26の位置に表示される このような感じです。活用していただければと思います。 なお今回の立ち絵簡易マクロの拡張ですが、以前のバージョンをバージョンアップしてYU-RISを使用している方で、 Y座標とZ座標の指定を利用できるようにするには、UserDefine\macro.txt の、 macro[name="優理" str="¥_ST( YUU ,$_M,$_M2,$_M3)" ] macro[name="枝理" str="¥_ST( ERI ,$_M,$_M2,$_M3)" ] と定義している部分を、 macro[name="優理" str="¥_ST( YUU ,$_M,$_M2,$_M3,$_M4,$_M5)" ] macro[name="枝理" str="¥_ST( ERI ,$_M,$_M2,$_M3,$_M4,$_M5)" ] という感じで、「,$_M4,$_M5」を追記してください。そうしないと、Y座標とZ座標の指定が効きません。 逆に言えば、X座標の指定のみ利用する場合は追記の必要はありません。 UIについて。セリフ表示中、一時的に特定のボタンを非表示にするには? Q: セリフ表示中に、一時的に特定のボタン(例えばセーブ、ロードのボタンだけ)を非表示にすることは可能でしょうか? UI毎別のもの(ボタンを非表示にしたもの)を用意しなければいけないのでしょうか? A: 現状ですと、セリフ表示中のみボタン変更するというのは出来ない仕様になってしまっています。すみません。 本来はそのあたりもβ4でいじれるようになる予定だった部分でして、いずれいじれるようにはしたいと思っています。 お待ちいただければと思います。 キャラのセリフ表示について、「」などを付けずに表示するには? Q: メッセージボックスに表示するキャラのセリフを、カッコなしの文字だけで表示させたいのですがどうすればよいのでしょうか? デフォルトのままだと、名前の後に定義した記号「 『 ( が続くとその行はキャラの台詞として判断されキャラのセリフが以下のように表示されます。 【例】 山田 「どうしたらいいか分かんないよ!」 これを、 【例】 山田 どうしたらいいか分かんないよ! の様に表示させたいのですがどうしたらよいのでしょうか? A: 現時点では括弧を表示しないようには出来ません。 ただ裏技的な感じで実現する方法がありまして、外字機能を使って「 と 」 の文字をそれぞれ透明な外字画像として割り当ててしまえば実現できます。 たとえば「cgsys¥main¥gaiji¥」フォルダが外字画像ファイルのある場所なのですが、その中に完全透明な画像 g00_22.png g00_36.png g00_48.png を入れます。(※現在外字サイズは3種固定でして、いずれ改善予定です。すみません) そして、UserDefine\文字定義.txt にて、 ¥GAIJI.MARK("「", "g00_") ¥GAIJI.MARK("」", "g00_") と定義すれば、括弧は表示されなくなります。 ただし、台詞としての括弧以外に「」を使っている場合、それも見えなくなってしまうので注意が必要です。 例) 主人公「これは「サンプル」です」 ↓ 主人公 これは サンプル です と表示されてしまいますので、ご注意下さい。 主人公の名前入力や入力された主人公の名前を使う方法 Q: 現在β4の最新版を使っているのですが、主人公の名前入力や入力された主人公の名前を使う方法を教えてください。 過去の掲示板を見る限りではβ3の方法しか書いていませんでした。β4の仕様は変更するとは書いていましたが、その後どうなったのかは書かれていませんでした。 β4のマニュアルに書いてあるのかと思いましたが、そちらにも書いてませんでした。 A: ひとまずβ4での使い方を簡単にここで説明したいと思います。 結局の所β4でも変数の記述の仕方が変わったくらいで、( $L.S() → $L() に、 $G.S() → $G() になりました )ほぼ変わっていません。 まず、主人公の名前を格納しておく変数を $L(), $G() から決めます。ここでは例として、ローカル変数の1番、$L(1) を使用することにします。 UserDefine\キャラ名定義.txt を開きます。その中で、 ¥CHAR.NAME("主人公","","",,1) と定義してください。定義した後スクリプト上で 主人公「あいうえお」 と書かれているテキストに関して、「主人公」の文字列の部分が自動的に $L(1) に格納されている文字列に置き換えられます。 例えば $L(1) に「ほげほげ」という文字列が入っていたら、 ほげほげ「あいうえお」 とゲーム中に表示されることになります。そしてユーザーによる文字列入力についてですが、スタート直後などに、 ¥INPUT.STR($L(1), "あなたの名前を入力してください。", "", "名前入力") このように書いていただければ文字列入力ダイアログが表示されて、そこに書いた文字列が $L(1) に格納されます。 また、キャラ名をセリフ中に表示させたい場合は、 ヒロイン「こんにちは、_[$L(1)]君」 のように書くことで表示できます。「_[変数]」は「変数の内容を表示する」という、YU-RISスクリプトの機能です。(詳細は、YU-RISマニュアルを参照して下さい) 毎回書くのが面倒な場合はマクロ化してしまうのも有効です。serDefine\macro.txt ファイル内で、 macro[name="PL" str=";_[$L(1)];" ] //PLAYER と定義しておけば、(「;」はどんな文中でも正しくマクロを動作させる為のおまじないと思ってください) ヒロイン「こんにちは、¥PL君」 と書けば可能になります。 β3の「¥TITLE.STARTLABEL( ~ )」について。 Q: ERISマニュアルを参考にyu-ris_0409 を勉強しているのですが、β3マニュアルの■各種設定を変更しよう(08/01/20)の図11 ¥TITLE.STARTLABEL( 1, "SCENARIO_START")が、yu-ris_0409のどのテキストにあるのか解らず困っています。 A: β4用のERISマニュアルが遅れておりご迷惑おかけしています。 その部分はβ3からβ4になり仕様変更された部分になりまして、代わりに SCENARIO_START.txt で指定する形になりました。 YU-RIS 0.409/0.21 で説明しますと、script¥Userscript¥SCENARIO_START.txt を開くと下の方に ¥GO.IF(@L(4001)==1, SCENARIO_MAIN) ¥GO.IF(@L(4001)==2, SCENARIO_EPILOGUE) という記述があるかと思いますが、これが最初から始めるボタン(スタートボタン)を押した場合のジャンプ先のラベルになります。 つまりβ3のERISチュートリアルでいうところの、 ¥TITLE.STARTLABEL( 1, "SCENARIO_START") ¥TITLE.STARTLABEL( 2, "SCENARIO_START2") にあたります。ですのでひとまず、 ¥GO.IF(@L(4001)==1, SCENARIO_MAIN) の「SCENARIO_MAIN」を「SCENE_01」に変えていただければ、β3のERISマニュアルと同じ挙動になります。 配布準備について。 その他について。 ウィンドウで文字の表示途中でバックログを見ると、バックログのテキストも途中までになってしまうのですが? Q: ゲーム中のウィンドウで文字の表示途中でバックログを見ると、バックログのテキストも途中までになってしまうのですが? A: (2011/02/14時の回答) 現在表示中のメッセージはリアルタイムに、メッセージウィンドウとバックログに表示をしております。仕様なのでご了承下さい。ただし、将来修正を行う可能性はあります。 システム効果音について Q: 設定項目の中に「システム効果音音量」と言うのがありますが、これを調整すると、どこの音が変わるのでしょう? A: YU-RISでのシステム効果音とは、UIなどを操作したとき等に再生される効果音です。 つまりボタンをクリックした時とかに再生される音で、この音量が変わります。 Q: システム効果音というのは、どうこでどう設定してどう使うのでしょうか? マニュアルやサンプルなど確認してみたのですが、分からなかったのですが。 A: UserDesign で各種画面の背景やボタンを設計できますが、同時に、ボタンに対するシステム効果音も定義できます。 ¥BT.SE というマクロで、 ¥BT.SE(ボタンにマウスカーソルを乗せた時に再生するシステム効果音ファイル名, ボタンをマウスクリックした時に再生するシステム効果音ファイル名) というパラメータになっています。 これを ¥BT.SET 命令より前に書いていただければボタンにシステム効果音が登録されます。 ファイルはデフォルトでは se フォルダの中のファイルを探しに行くようになっていて、これは「UserDefine¥フォルダ定義.txt」のSSEフォルダ」の定義の項目で変更可能です。 記述例: ¥BT.SE(d_chime01, semi) //←マウスカーソルを乗せた時に d_chime01 を再生し、マウスクリックした時に semi を再生する ¥BT.SE(, semi) //←マウスカーソルを乗せた時は何も再生せず、マウスクリックした時に semi を再生する 「yu-risコンパイラが無いため中止します。」と出る。 Q: パソコンが、「yu-risコンパイラが無いため中止します。」と、でてきます。 A: YU-RISで作られたソフトを起動する時、パソコン(OS)に何か問題があると出る様です。 復元を行うか、最悪はリカバリー(買ってきた時の状態に戻すこと)を行うしかないと思われます。 大幅変更・加筆履歴コメント 名前 コメント
https://w.atwiki.jp/javamock/pages/36.html
テキストエディタ ソース ver1.0 TextEditor.java import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * テキストエディタのメインクラスです * * @author mock * */ public class TextEditor extends JFrame implements ActionListener { /** * serialVersionUID */ private static final [[long]] serialVersionUID = 1L; /** * テキストエリア */ private JTextArea textArea; /** * メニューバー */ private JMenuBar menuBar; /** * ファイル選択 */ private JFileChooser fileChooser = new JFileChooser(); /** * テキストエリアの幅 */ private final [[int]] textAreaWidth = 300; /** * テキストエリアの高さ */ private final int textAreaHeight = 300; /** * 新規のタイトル名 */ private final [[String]] undifinedTitle = "title"; /** * バージョン */ private final String version = "ver1.0"; /** * コンストラクタ * * @throws HeadlessException */ TextEditor() throws HeadlessException { super(); setVisible(true); setTitle(undifinedTitle); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // メニューバーの作成 createMenuBar(); // テキストエリアの作成 createTextArea(textAreaWidth, textAreaHeight); pack(); } /** * mainメソッドです * * @param args */ public static void main(String[] args) { new TextEditor(); } /** * メニューバーを作成するメソッドです */ private void createMenuBar() { menuBar = new JMenuBar(); getRootPane().setJMenuBar(menuBar); // ファイル(F) JMenu menuFile = new JMenu("ファイル(F)"); menuFile.setMnemonic('F'); menuBar.add(menuFile); // ファイル(F)>新規(N) JMenuItem menuItemNew = new JMenuItem("新規(N)"); menuItemNew.setMnemonic('N'); menuItemNew.setActionCommand("NEW"); menuItemNew.addActionListener(this); menuFile.add(menuItemNew); // ファイル(F)>開く(O) JMenuItem menuItemOpen = new JMenuItem("開く(O)"); menuItemOpen.setMnemonic('O'); menuItemOpen.setActionCommand("OPEN"); menuItemOpen.addActionListener(this); menuFile.add(menuItemOpen); // ファイル(F)>上書き保存(S) JMenuItem menuItemSave = new JMenuItem("上書き保存(S)"); menuItemSave.setMnemonic('S'); menuItemSave.setActionCommand("SAVE"); menuItemSave.addActionListener(this); menuFile.add(menuItemSave); // ファイル(F)>名前を付けて保存(A) JMenuItem menuItemSaveAs = new JMenuItem("名前を付けて保存(A)"); menuItemSaveAs.setMnemonic('A'); menuItemSaveAs.setActionCommand("SAVEAS"); menuItemSaveAs.addActionListener(this); menuFile.add(menuItemSaveAs); // ヘルプ(H) JMenu menuHelp = new JMenu("ヘルプ(H)"); menuHelp.setMnemonic('H'); menuBar.add(menuHelp); // ヘルプ(H)>バージョン情報 JMenuItem menuItemVersion = new JMenuItem("バージョン情報"); menuItemVersion.setActionCommand("VERSION"); menuItemVersion.addActionListener(this); menuHelp.add(menuItemVersion); } /** * テキストエリアを作成するメソッドです * * @param width * テキストエリアの幅 * @param height * テキストエリアの高さ */ private void createTextArea(int width, int height) { textArea = new JTextArea(); JScrollPane scrollPane = new JScrollPane(textArea); scrollPane.setPreferredSize(new Dimension(width, height)); getContentPane().add(scrollPane); } /* * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); if (actionCommand.equals("NEW")) { newFile(); } else if (actionCommand.equals("OPEN")) { openFile(); } else if (actionCommand.equals("SAVE")) { save(); } else if (actionCommand.equals("SAVEAS")) { saveAs(); } else if (actionCommand.equals("VERSION")) { showVersionInfo(); } } /** * 「ファイル(F)>新規(N)」選択時に処理を行うメソッドです */ private void newFile() { fileChooser.setSelectedFile(null); fileChooser.setName(undifinedTitle); setTitle(undifinedTitle); textArea.setText(""); } /** * 「ファイル(F)>開く(O)」選択時に処理を行うメソッドです */ private void openFile() { try { if (fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); FileReader fileReader = new FileReader(selectedFile); textArea.read(fileReader, null); fileReader.close(); setTitle(fileChooser.getName(selectedFile)); } } catch (Exception e) { e.printStackTrace(); } } /** * 「ファイル(F)>上書き保存(S)」選択時に処理を行うメソッドです */ private void save() { // ファイルが既に開かれている場合 if (fileChooser.getSelectedFile() != null) { try { writeFile(); } catch (Exception e) { e.printStackTrace(); } [[return]]; } saveAs(); } /** * 「ファイル(F)>名前を付けて保存(A)」選択時に処理を行うメソッドです */ private void saveAs() { try { // ファイルダイアログ「保存」が選択された場合 if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { writeFile(); File selectedFile = fileChooser.getSelectedFile(); setTitle(fileChooser.getName(selectedFile)); } } catch (Exception e) { e.printStackTrace(); } } /** * 「ヘルプ(H)>バージョン情報」選択時に処理を行うメソッドです */ private void showVersionInfo() { JOptionPane.showMessageDialog(this, version, "version", JOptionPane.INFORMATION_MESSAGE); } /** * fileChooserで選択されているファイルを保存するメソッドです * * @throws IOException */ private void writeFile() throws IOException { FileWriter fileWriter = new FileWriter(fileChooser.getSelectedFile()); fileWriter.write(textArea.getText()); fileWriter.close(); } }
https://w.atwiki.jp/yasrun/pages/34.html
ユーザやDBの作成など DOS窓+mysqlコマンドで、日本語がINSERT/UPDATEできない PHPからの実行で文字化け 消えないテーブルがある… 読み方 主キーにしてるのにAUTO_INCREMENTできない! DBがUTF-8だとWindowsのコマンドプロンプトで文字化けする~;; 日本語をINSERTしたら文字化けした! rootのパスワードを忘れてしまった! UTF8で書いたINSERT文SQLファイルを実行したら文字化け ストレージエンジンの確認と変更 ★
https://w.atwiki.jp/nectaris/pages/134.html
今回も砂漠面で、ROMULOUSのDESERTと違ってしっかり砂漠面である。 ステージ名もROMULOUSと同じくDESERTなので便宜的にページ名は「DESERT2」としてある。 このマップは1画面でユニット数も少なく、主力がKILROYと激ムズMAPにありがちな配置。 とにかく工場を取らないことには話にならないのでCHARLIEを移動させるが、一回わざと崖の上に立ってBISONを引き寄せておこう。 また収容所付近では収容所真下と右下をTRIGGERで塞いでおき、収容所真下のTRIGGERの左下をMULEで守っておく。 工場を取ったら左上にNEXTORを、真上にTRIGGERを、左下にOCTOPUSを搬出、残りはKILROYを搬出しよう。 このターンはOCTOPUSは狙われずKILROYが狙われるのでOCTOPUSでTRIGGERを狙う連中を射程に入れ、NEXTORは収容所のTRIGGERの修理に回す。 またKILROYはMULEの位置にいる防衛ユニットとして入れ替えながら配置する。 収容所のTRIGGERがやられたら顔を洗って出直し。とはいえ回復は十分間に合うだろう。 敵HADRIANは上記の通りKILROYを最初に狙ったあと以降は特段意識しなければ収容所下のTRIGGERを狙ってくるため優先的に修理しよう。 今回のコンピューターはどういうわけか占領返しを恐れずに占領してくるため、CHARLIEや傷ついたKILROYを近くに待機させておこう。 運良くRABBITが入り込んだらしめたものだが、そこまでうまくいかなくても勝てる。 工場上のTRIGGERについては、RABBITが狙いに来るはずで、KILROYの占領とそれまでの被弾具合ではそのまま工場に戻ってくれることもある。 また工場上のTRIGGERはたぶん修理している暇がないので、破壊されてしまうかもしれないが、その場合は数多の歩兵を駆使して釣って撃破、というのが適当か。 残りがHADRIAN(とRABBIT)だけとか少数になったら総出で突撃して撃破ということになる。 MULEにCHARLIEを乗せれば優先的に狙ってくる性質を利用すれば簡単に倒せると思うが、そこまでしなくても物量が圧倒的なのでひたすら殴ればどうにでもなる。
https://w.atwiki.jp/floi/pages/14.html
SQL*Loderの取込モード ・INSERT ロードするテーブルが空の場合に、テーブルにロードされます。 データがロード先のテーブルに存在してた場合、ロードされません。 ロードタイプを指定しない場合も、デフォルトはINSERTになります。 ・APPEND ロード先のテーブルにデータが存在する/しないに関わらず、ロードします。 パラレル実行の場合には、APPEND モードしか利用できない。 ・REPLACE ロード先のテーブルにデータが存在してる場合、削除してから、ロードします。 重複データの置き換えではなく、全レコードの DELETE を行ってからローディング処理を行なう。 エラー発生時は、ロールバックしますが大量データロード時には時間が掛かります。 TIPS ステージング領域(中間テーブル)無しにレコードデータの置換処理をしたい場合には、外部表と MERGE を使用する。 ・TRUNCATE ロード先のテーブルにデータが存在してる場合、削除してから、ロードします。 エラー発生時は、lロールバックしませんが、大量データをロードする時の速度は REPLACEに比べると格段に早くなります。 テーブルへの DELETE 権限では、この設定は利用することができない点に注意する。 ORA-01031 権限が不足しています。 のエラーになる (TRUNCATE TABLE には DROP TABLE 権限が必要) SQL*Loaderの終了コード 結果 終了コード すべての列が正常にロードされた EX_SUCC すべての行または一部の行が拒否された EX_WARN すべての行または一部の行が拒否された EX_WARN ロードが中断された EX_WARN コマンドラインまたは構文エラー EX_FAIL SQL*Loaderに対してリカバリ不能なOracleエラー EX_FAIL OS関連エラー(ファイルのオープン/クローズ、mallocなど) EX_FAIL UNIXの終了コード Windows NTの終了コード EX_SUCC 0 EX_SUCC 0 EX_FAIL 1 EX_WARN 2 EX_WARN 2 EX_FAIL 3 EX_FTL 3 EX_FTL 4 不良ファイルと拒否ファイル 不良ファイル (badfile) 入力データを Oracle にインサートしようとしてできないデータが出力される。ダイレクトパス か 従来型パスかによって変化するがデータフォーマットの不一致、制約違反、型変換の失敗。 拒否ファイル (discard) コントロールファイル内で処理されなかったデータが出力される。コントロールファイル内の WHEN 句の分岐により処理されなかったレコード。 つまり、拒否ファイルが出力されることはコントロールファイルの制御下にある警告のようなログファイルであるが、不良ファイルが出力されることはデータファイル、または、一意制約などに関わるデータの品質に由来するエラーログに近い状態であるとも言える。 「データ・ファイルのフィールドが最大長を超えています。」 http //monjyu.biz/developer/bd3/bg12/msg/503.html
https://w.atwiki.jp/winamp/pages/40.html
以下原文のまま これらのキーボードショートカットが良い開始点であることに注目してください。ただし、このリストは完全には程遠いです。 ** キーボードショートカット (これらは大部分のWinampウインドウで使えます) ******* キー動作 F1ヘルプを開く Ctrl+F1Winampについてを開く Ctrl+A常に手前表示切り替え (プレイリストエディタとメディアライブラリでは無効) Ctrl+Alt+A常に手前表示切り替え (プレイリストエディタ) Ctrl+Wウインドウシェードモード切り替え Ctrl+D2倍サイズ切り替え Ctrl+E簡単移動切り替え (クラシックスキンのみ) Ctrl+T時間表示モード切り替え Alt+Wメインウインドウ表示切り替え Alt+Eプレイリストエディタ表示切り替え Alt+Gイコライザ表示切り替え Alt+Vビデオウインドウ表示切り替え Alt+Lメディアライブラリ表示切り替え Ctrl+TabWinampウインドウ間のアクティブ切り替え Alt+Sスキン選択へ移動 Ctrl+PWinamp設定へ移動 Alt+Fメインメニューを開く Alt+K現在のVisualizationプラグイン設定を開く Ctrl+Sh+K現在のVisualizationプラグインの開始/停止 Ctrl+KWinamp設定のVisualizationプラグイン画面を開く Ctrl+J指定時間へジャンプ画面を開く J or Keypad .指定ファイルへジャンプ画面を開く Ctrl+Alt+NWinampを新たに起動する(多重起動される) Ctrl+Alt+Bブックマークに追加 (ML と ml_bookmarks で有効) Alt+MWinampを最小化 Ctrl+H再生ファイル履歴を表示 ** メインウインドウキーボードショートカット ******* キー動作 (オプション/切り替え) Rリピート切り替え Sシャッフル切り替え Alt+3再生中ファイルの情報ボックス/タグエディタを開く (再生制御) Z前のトラック X再生/再開/停止解除 C一時停止/一時停止解除 V停止 Shift+Vフェードアウトして停止 Ctrl+V現在の曲を再生後に停止 B次のトラック Lファイルを再生 Ctrl+LURLを再生 Shift+Lフォルダを再生 ←5秒戻る →5秒進む ↑音量を上げる ↓音量を下げる テンキー 110曲前にジャンプ テンキー 6次のトラック テンキー 5再生/再生再開/一時停止解除 テンキー 4前のトラック テンキー 310曲後のジャンプ テンキー 75秒戻る テンキー 95秒進む テンキー 8音量を上げる テンキー 2音量を下げる テンキー 0ファイルを再生 Ctrl+テンキー 0URLを再生 Insertフォルダを再生 ** プレイリストウインドウキーボードショートカット ******* キー動作 Rリピート切り替え Sシャッフル切り替え Ctrl+Zリストの先頭に移動 Ctrl+Bリストの末尾に移動 Alt+Iブックマークに追加 (ML と ml_bookmarks で有効) (ファイルI/O) Lファイル追加 Ctrl+LURL追加 Shift+L フォルダ追加 Ctrl+N新規プレイリスト作成 Ctrl+Oプレイリストをロード Ctrl+Sプレイリストをセーブ Alt+3選択トラック情報 Ctrl+E選択トラックの名前変更 Ctrl+テンキー 0URL追加 Insertフォルダ追加 (プレイリスト操作) Ctrl+A全て選択 Ctrl+I選択の切り替え Deleteプレイリストから選択ファイルを削除する Ctrl+Delete未選択ファイルを削除する Ctrl+Sh+Delプレイリストをクリア (Ctrl+Nと同じ動作) Alt+↓ 選択ファイルを下に移動 Alt+↑ 選択ファイルを上に移動 ↓カーソル下移動 ↑カーソル上移動 Enter選択ファイルを再生 Endリスト終端にジャンプ Homeリスト先頭にジャンプ Page Up1ページを5曲上に移動 Page Down1ページを5曲下に移動 Alt+Delete実体が存在しない項目をプレイリストから削除 (プレイリストソート) Ctrl+Sh+1タイトルでソート Ctrl+Sh+2ファイル名でソート Ctrl+Sh+3ファイルパスとファイル名でソート Ctrl+R逆順並べ替え Ctrl+Sh+Rシャッフル 大部分のメインウインドウ再生コントロールはプレイリストエディタでも機能します. ** イコライザーキーボードショートカット (クラシックスキンのみ) ******* キー動作 1 - 0EQバンド 1-10 増加 Q - PEQバンド 1-10 減少 `EQプリアンプ増加 TABEQプリアンプ減少 NEQ有効切り替え AEQ自動ロード切り替え Sプリセットメニューを開く Ctrl+Alt+Sロードプリセット
https://w.atwiki.jp/elvis/pages/3852.html
Savings and Loan Associations Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Accountants' Index 35th Supplement, 1986 Amer Inst of Certified PublicLinda C. Pierce AmerInstofCertifiedPublic LindaC.Pierce undefined undefined Incorporating a Closely Held Business Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Measurement of Corporate Social Performance Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Statistical Auditing Amer Inst of Certified PublicDonald M. Roberts? AmerInstofCertifiedPublic DonaldM.Roberts? undefined undefined Behavior of Major Statistical Estimators in Sampling Accounting Populations Amer Inst of Certified PublicJohn Neter?James Loebbecke? AmerInstofCertifiedPublic JohnNeter? JamesLoebbecke? undefined undefined Disclosure of Related Party Transactions Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Aicpa Audit and Accounting Guide Audits of Providers of Health Care Services With Conforming Changes As of May 1, 1992 Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Audit Considerations in Electronic Funds Transfer Systems Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Uniform Cpa Examination 1997 Selected Questions Unofficial Answers Information for Uniform Cpa Examination Candidates/With Calculator Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Computer Assisted Audit Techniques Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Guidelines to Assess Computerized General Ledger and Financial Reporting Systems for Use in Cpa Firms Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Guidelines to Assess Computerized Time and Billing Systems for Use in Cpa Firms Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Illustrations of Accounting for Joint Ventures Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Internal Accounting Control Evaluation and Auditor Judgment# (Auditing Research Monograph, No 3) Amer Inst of Certified PublicTheodore J. Mock? AmerInstofCertifiedPublic TheodoreJ.Mock? Subjects-Business&Investing-Industries&Professions-Accounting-Auditing? Subjects-Business&Investing-Industries&Professions-Accounting-General? Subjects-Professional&Technical-Accounting&Finance-Industries&Professions-Accounting-Auditing? Subjects-Professional&Technical-Accounting&Finance-Industries&Professions-Accounting-General? Subjects-Professional&Technical-Accounting&Finance-Accounting-General? Operating a Successful Accounting Practice Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Audits of Airlines Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Health Care Organizations With Conforming Changes As of May 1, 1997 Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Federal Conflict of Interest Laws As Applied to Government Service by Partners and Employees of Accounting Firms Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Accounting for Innovative Financing Arrangements Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Disclosures of Inflation Accounting Information Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Illustrations of a Foreign Currency Translation A Survey of the Application of Fasb Statement, No. 52 Amer Inst of Certified PublicHortense Goodman? AmerInstofCertifiedPublic HortenseGoodman? undefined undefined Statement on Quality Control Standards Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Auditor's Study and Evaluation of Internal Control in Edp Systems Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Pcps Peer Review Manual Including Descriptive Book Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Accounting Trends and Techniques Amer Inst of Certified Public AmerInstofCertifiedPublic Substores-UnknownASINs-8 Subjects-Science-General Cpa Examination Questions and Answers Indexed to Content Specification Outline 1985-1989/079243 Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Effective Inventory Management for Small Manufacturing Concerns Amer Inst of Certified Public AmerInstofCertifiedPublic undefined undefined Index to Accounting and Auditing Technical Pronouncements As of December 1, 1995/003486 Amer Inst of Certified Public AmerInstofCertifiedPublic Subjects-Business&Investing-Economics? Subjects-Business&Investing-General? Subjects-Nonfiction-Economics? Subjects-Professional&Technical-Accounting&Finance-Economics? Amer Inst of Certified Public-洋書? [[Amer Inst of Certified Public}} 洋書
https://w.atwiki.jp/c21coterie/pages/604.html
問い181 問題文と2時間ほどにらめっこして到達した答え。 整数論の授業は人生で一度も受けたことがないのでまあ頑張ってアルゴリズムをひとりで考えてみた。 BWの組み合わせに番号を振って、黒白の石の数とセットを小さいほうからメモ化で積み上げていくコード。 memo[黒石の数][白石の数][この組でのBWのセットの最大値]であとはこれをメモ化を使いながら動的計画法でアセプト。 コード実行時間5秒。 まあまあだと思う。 必要のなさそうなループが一か所あるようなのでそこを削れれば今のコードより1000倍くらい早くなるかも? 調べて解くより自分で考えて解く方が楽しいというのはプログラマ(プロアマとわず)としては完全に欠点だな。 プログラマは自分で考えるより調べて応用できる方が重要だもの、俺はプロのプログラマにはなれない。 #include stdio.h #include string.h #include iostream const int bSize=60; const int wSize=40; const int hashSize=(bSize+1)*(wSize+1); __int64 memo[bSize+1][wSize+1][hashSize+1]; void calc(int b,int w){ __int64 temp; for(int i=1;i hashSize;i++){ int b1=i/(wSize+1); int w1=i%(wSize+1); temp=0; if(b =b1 w =w1){ //解いただけでアップアップ状態だけど、このループ、ループなしで計算できるかも? for(int j=0;j =i;j++){ temp+=memo[b-b1][w-w1][j]; } memo[b][w][i]=temp; } } } int main(){ memset(memo,0,sizeof(memo)); memo[0][0][0]=1; __int64 ans=0; for(int b=0;b =bSize;b++){ for(int w=0;w =wSize;w++){ calc(b,w); } } for(int i=1;i hashSize;i++){ ans+=memo[bSize][wSize][i]; std cout memo[bSize][wSize][i] "\n"; } std cout ans; } 問い185 Number Mind は, 有名なゲームMaster Mindの変種である. 色つきのペグの代わりに, 秘密の数字を推理する. 推理するごとに, 正しい桁がいくつあったかのみが伝えられる. つまり, 答えが1234で, 2036と推理した場合, 1つの桁が正しいと伝えられる. 数字は正しいが場所が違うということは伝えられない. 例えば, 以下の5桁の推理では, 90342 ;2 桁正しい 70794 ;0 桁正しい 39458 ;2 桁正しい 34109 ;1 桁正しい 51545 ;2 桁正しい 12531 ;1 桁正しい 答えの数字は39542の唯一つとなる. 以下の推理に基づいて, 5616185650518293 ;2 桁正しい 3847439647293047 ;1 桁正しい 5855462940810587 ;3 桁正しい 9742855507068353 ;3 桁正しい 4296849643607543 ;3 桁正しい 3174248439465858 ;1 桁正しい 4513559094146117 ;2 桁正しい 7890971548908067 ;3 桁正しい 8157356344118483 ;1 桁正しい 2615250744386899 ;2 桁正しい 8690095851526254 ;3 桁正しい 6375711915077050 ;1 桁正しい 6913859173121360 ;1 桁正しい 6442889055042768 ;2 桁正しい 2321386104303845 ;0 桁正しい 2326509471271448 ;2 桁正しい 5251583379644322 ;2 桁正しい 1748270476758276 ;3 桁正しい 4895722652190306 ;1 桁正しい 3041631117224635 ;3 桁正しい 1841236454324589 ;3 桁正しい 2659862637316867 ;2 桁正しい 16桁の唯一つの答えの数字を答えよ. 解法 賢い方法を思いつかなかったのでまずは答えだけもとめようと思い2重再帰の全探索で答えを求めてみました。 答えが一つであることを利用してsaiki関数の最後のcheck処理で少しずるをしています。 答えが複数になる場合はもう少し工夫が必要です。 #include stdio.h #include string.h void saiki(int deep,char commits[17]); int size; bool last=false; int outs[17][10]; struct D{ char text[17]; int hit; D(char t[17],int h){ for(int i=0;i 17;i++)text[i]=t[i]; hit=h; } }; D datas[]= { D("5616185650518293",2), D("3847439647293047",1), D("5855462940810587",3), D("9742855507068353",3), D("4296849643607543",3), D("3174248439465858",1), D("4513559094146117",2), D("7890971548908067",3), D("8157356344118483",1), D("2615250744386899",2), D("8690095851526254",3), D("6375711915077050",1), D("6913859173121360",1), D("6442889055042768",2), D("2321386104303845",0), D("2326509471271448",2), D("5251583379644322",2), D("1748270476758276",3), D("4895722652190306",1), D("3041631117224635",3), D("1841236454324589",3), D("2659862637316867",2) }; void saiki2(int deep,int p,char commits[17],int commit){ if(commit datas[deep].hit)return; if(p==16){ if(commit!=datas[deep].hit)return; saiki(deep+1,commits); return; } char c1=datas[deep].text[p],c2=commits[p]; if(c2== a ){ if(outs[p][c1- 0 ]==0 commit datas[deep].hit){ commits[p]=c1; saiki2(deep,p+1,commits,commit+1); commits[p]= a ; } if(last==true)return; outs[p][c1- 0 ]++; saiki2(deep,p+1,commits,commit); outs[p][c1- 0 ]--; }else{ if(c1==c2){ saiki2(deep,p+1,commits,commit+1); }else{ saiki2(deep,p+1,commits,commit); } } } void check(char commits[17]){ for(int i=0;i size;i++){ if(commits[i]== a ){ for(int j=0;j 10;j++){ if(outs[i][j]==0)commits[i]= 0 +j; } } } } void saiki(int deep,char commits[17]){ if(deep =size){ check(commits); printf("ans=%s\n",commits); last=true; return; } //int a; //printf("(%d %s)",deep,commits); //scanf("%d", a); saiki2(deep,0,commits,0); } int main(){ size=sizeof(datas)/sizeof(D); //printf("%s %d\n",datas[1].text,datas[1].hit); char commits[17]; memset(commits, a ,sizeof(commits)); memset(outs,0,sizeof(outs)); commits[16]= \0 ; saiki(0,commits); } 問い186 今, 100万人のユーザをもつ電話システムの通信記録がある. Rec NrCallerCalled 1200007100053 2600183500439 3600863701497 ......... n番目の記録の掛けた側と掛けられた側の電話番号は Caller(n) = S2n-1 と Called(n) = S2nで与えられる. S1, S2, ...は“ラグ付きフィボナッチ生成器”で定義される. 1 ≤ k ≤ 55については, Sk = [100003 - 200003k + 300007k3] (modulo 1000000) 56 ≤ kでは, Sk = [Sk-24 + Sk-55] (modulo 1000000)である. もしCaller(n) = Called(n)であれば, ユーザは間違って電話を掛けたとされ通信は切断される. そうでない場合には, 通信は成功している. XがYに電話を掛けるかその逆のときに, ユーザXとユーザYが友達であると呼ぶ. 同様に, XがYの友達であるかつYがZの友達であるとき, XがZの友達の友達であると呼ぶ. 同様にして長い連鎖が得られる. 首相の電話番号は524287である. 何回電話を掛けると99%のユーザ (首相自身も含む) が首相の友達になるだろうか? (注 切断された通信は数えない.) 解法 ユニオン木の概念を使って問題を解きます。 電話がかかるたびに生成されていくフレンドリストのグラフを以下の要領で纏めていきます。 電話がかかった場合、番号が小さいか大統領の電話ならそちらの番号を新しいボスとしてユニオン木にまとめていきます。 統合された方は統合された方のボスのボスとして統合する方のボスを新しいボスとして上位者に設定し、人数の報告を聞きます。 これを繰り返せばそこそこの速度で計算が終わります。 #include stdio.h #include set #include vector #include iostream const int all=100*10000; int callCount=0; int friendCount[all+2],toBoss[all+2]; int presidentNo=524287; void unionFriend(int call1,int call2){ if(call1==call2)return; callCount++; std vector int friendChain[2]; while(1){ friendChain[0].push_back(call1); if(toBoss[call1]==-1)break; call1=toBoss[call1]; } while(1){ friendChain[1].push_back(call2); if(toBoss[call2]==-1)break; call2=toBoss[call2]; } if(call1==call2)return; int changeBoss,bossNo; if(call1==presidentNo||(call1 call2 call2!=presidentNo)){ changeBoss=1; bossNo=call1; friendCount[call1]+=friendCount[call2]; friendCount[call2]=0; }else if(call2==presidentNo || (call2 call1 call1!=presidentNo)){ changeBoss=0; bossNo=call2; friendCount[call2]+=friendCount[call1]; friendCount[call1]=0; }else{ //あり得ないが念のため int a; printf("code Error %d %d\n",call1,call2); scanf("%d", a); } for(unsigned int i=0;i friendChain[changeBoss].size();i++){ toBoss[friendChain[changeBoss][i]]=bossNo; } } int main(){ int S[60]; __int64 k,mod=all; for(int i=0;i =all;i++){ friendCount[i]=1;//自分自身と知り合い toBoss[i]=-1;//まだi番の番号にボスはいない } for(k=1;k =55;k++){ S[(int)k]=(100003 - 200003*k + 300007*k*k*k)%mod; if(k%2==0){ unionFriend(S[(int)k],S[(int)k-1]); } } int K=k-1; while(friendCount[presidentNo] 99*10000){ K++; S[K%56]=(S[(K-55)%56]+S[(K-24)%56])%mod; if(K%2==0){ unionFriend(S[K%56],S[(K-1)%56]); } } printf("%d",callCount); } 問い187 http //projecteuler.net/problem=187 解法 ええと余りよくないコードです。 何の工夫もなく全探索してるだけで遅いです。 一億くらいなら扱う数字も小さいからいけるかと思ったのですが意外と時間かかりました。 反面教師にしかならないコードですね。 #include stdio.h #include vector const int up=11000; std vector int sosuu; bool so[up+1]; void setSo(){ int i2; memset(so,true,sizeof(so)); so[0]=so[1]=false; for(int i=4;i =up;i+=2)so[i]=false; sosuu.push_back(2); for(int i=3;i =up;i+=2){ if(so[i]==false)continue; sosuu.push_back(i); i2=i*2; for(int j=i*3;j up;j+=i2){ so[j]=false; } } } bool check(int n){ int a,count=0; for(int i=0;i sosuu.size();i++){ a=sosuu[i]; while(n%a==0){ count++; n/=a; if(count 1)break; } if(count 1)break; } if(n!=1)count++; return count==2; } int main(){ setSo(); int ans=0; for(int n=1;n 10000*10000;n++){ ans+=(check(n)); } printf("%d",ans); } 問い188 1777↑↑1855の最後の8桁を求めよ. 人生で初めてみる演算子というか相変わらず整数論の教育を人生で一度も受けたことがなかったので、どんな概念かわからなかったのですが、とりあえず乗算の周期性を利用して30分ほどひとりで考えてコードを書いて解いてみました。 整数論について知らず調べ物もせず書いたコードなので多分効率の悪いコードだと思う。 今のところコード実行時間は0.905秒。 #include stdio.h #include map #include iostream #include time.h __int64 size=1,mod=100000000; std map int,int toNum; __int64 hp(__int64 a,__int64 k){ if(k==1)return a; return toNum[(int)hp(a,k-1)%size]; } int main(){ double start=clock(); __int64 a=1777,b=a*a; toNum[0]=1; while(b!=a){ b=(b*a)%mod; size++; } b=1; for(int no=0;no size;no++){ toNum[no]=b; b=(b*a)%size; } __int64 k=hp(a,1854); b=1; for(int i=0;i k;i++)b=(b*a)%mod; std cout "ans=" b " time=" clock()-start; } 問い189 http //projecteuler.net/problem=189 三角形を塗り分けていくとき何通りの塗り分け方があるか答える問題。 解法 とりあえず一段ずつに分けての動的計画法でアセプト。 速度が出なかったので、一段の三角形の色を2ビットずつで扱う方法に切り替えてみたrgbでrが0、gが1、bが2。 コード実行時間30秒だからぎりぎり合格。 もしかしたら再帰と動的計画法を組み合わせたほうが早いかも。 #include stdio.h #include map #include set #include iostream #include time.h int main(){ double start=clock(); std map __int64,__int64 board[9]; std map __int64,__int64 iterator it; std set __int64 now,next; std set __int64 iterator sIt; board[0][0]=1; __int64 t,t1,ans=0; __int64 maskU,maskD; __int64 r=0,g=1,b=2,r1=0,g1=4,b1=8; now.insert(0); now.insert(1); now.insert(2); maskU=0x3; maskD=0xc; for(int i=1;i =7;i++){ for(sIt=now.begin();sIt!=now.end();sIt++){ t=(*sIt); t1=t 3; t=t 4; if(t1!=r){ next.insert(t|r1|g); next.insert(t|r1|b); } if(t1!=g){ next.insert(t|g1|r); next.insert(t|g1|b); } if(t1!=b){ next.insert(t|b1|r); next.insert(t|b1|g); } } for(it=board[i-1].begin();it!=board[i-1].end();it++){ __int64 pattern=(*it).first; for(sIt=next.begin();sIt!=next.end();sIt++){ __int64 patternD=((*sIt) maskD) 2; __int64 patternU=pattern maskU; bool out=false; //なにかブール演算で一発判定とか行かないかな? for(int j=0;j i;j++){ if((patternU 3)==(patternD 3)){ out=true; break; } patternU=patternU 4; patternD=patternD 4; } if(out==true)continue; if(board[i].find((*sIt))==board[i].end())board[i][(*sIt)]=0; board[i][(*sIt)]+=(*it).second; } } printf("%d ",board[i].size()); ans=0; for(it=board[i].begin();it!=board[i].end();it++){ //std cout (*it).second " "; ans+=(*it).second; } std cout "ans=" (ans)*3 "\n"; now.clear(); now.insert(next.begin(),next.end()); next.clear(); maskU=(maskU 4)|0x3; maskD=(maskD 4)|0xc; } std cout "time=" clock()-start; } 動的計画法と再帰探索を組み合わせてみた手法。 次の段の計算に必要なのはその段の奇数列目のみということに注目して速度アップ。 コードも短くシンプルになったし速度も1.903秒と上がったが、まだ不十分。 他の人のコードは眺めただけでまだ読んでないが1秒切るのが普通らしい。 この問題スクリプトで0.1秒を切ってる人たちはみてる世界が違う。 私は素朴に見えた世界でしか問題を解いてないような気がする。 まだまだ俺って実力ないな、、、 他の人のコードを見てなんとなく思いついたこと、もしかして私のコードsaiki関数のところで無駄な探索処理が繰り返されているってことか? 前の段の探索結果を再利用して計算結果を抑えろってことかも。 でもなんか実装が難しそうだな。 #include stdio.h #include map #include set #include iostream #include time.h std map __int64,__int64 board[9]; std map __int64,__int64 iterator it; void saiki(__int64 patternU,__int64 nowPattern,int old,int col,int size,int row,__int64 add){ if(col==size){ if(board[row].find(nowPattern)==board[row].end())board[row][nowPattern]=0; board[row][nowPattern]+=add; return; } int bad1=old,bad2=-1; if(col%2==1){ bad2=patternU 3; patternU=patternU 4; } nowPattern=nowPattern 2; for(int color=0;color 3;color++){ if(color==bad1||color==bad2)continue; int c=(col%2==0)*color; saiki(patternU,nowPattern|c,color,col+1,size,row,add); } } int main(){ double start=clock(); board[0][0]=1; for(int i=1;i =7;i++){ for(it=board[i-1].begin();it!=board[i-1].end();it++){ saiki((*it).first,0,-1,0,i*2+1,i,(*it).second); } printf("%d ",board[i].size()); __int64 ans=0; for(it=board[i].begin();it!=board[i].end();it++){ //std cout (*it).second " "; ans+=(*it).second; } std cout " ans=" (ans)*3 "\n"; } std cout "time=" clock()-start; } 問い189解法3 ここから先は他の人のコードを参考にしてコードを書いてみました。 とりあえずRGBの色の対称性を利用して計算量を下げてみた。 コード実行時間0.575秒、1秒は切れたがmapが足をひっぱているためにこれ以上はstd mapでは無理。 std mapを隙間のない配列に変換すればもう少し速度が出そうです。 2段目がRGR、BDBだとこの二つはその後の組み合わせ数は同じとなります。 これを利用して以後同じパターンは纏めていきます。 #include stdio.h #include map #include set #include iostream #include time.h std map int,__int64 board[9]; std map int,__int64 iterator it; std map int,int sweep[9]; int changeColor[5][3]={{2,1,0}, {2,0,1}, {1,2,0}, {1,0,2}, {0,2,1}}; void unionSet(int pattern,int size,int row){ size=(size+1)/2; for(int i=0;i 5;i++){ int p1=pattern,p2=0; for(int c=0;c size;c++){ int color=(p1 (c*2)) 3; p2|=(changeColor[i][color]) (c*2); } sweep[row][p2]=p1; } } void saiki(int patternU,int nowPattern,int old,int col,int size,int row,__int64 add){ if(col==size){ if(sweep[row].find(nowPattern)!=sweep[row].end()){ board[row][sweep[row][nowPattern]]+=add; return; } if(board[row].find(nowPattern)==board[row].end())board[row][nowPattern]=0; board[row][nowPattern]+=add; unionSet(nowPattern,size,row); return; } int bad1=old,bad2=-1; if(col%2==1){ bad2=patternU 3; patternU=patternU 2; nowPattern=nowPattern 2; } for(int color=0;color 3;color++){ if(color==bad1||color==bad2)continue; int c=(col%2==0)*color; saiki(patternU,nowPattern|c,color,col+1,size,row,add); } } int main(){ double start=clock(); board[0][0]=1; for(int i=1;i =7;i++){ for(it=board[i-1].begin();it!=board[i-1].end();it++){ saiki((*it).first,0,-1,0,i*2+1,i,(*it).second); } printf("%d ",board[i].size()); __int64 ans=0,t=0; for(it=board[i].begin();it!=board[i].end();it++){ //std cout (*it).second " "; ans+=(*it).second; if(t (*it).first)t=(*it).first; } std cout " ans=" (ans)*3 " " t "\n"; } std cout "time=" clock()-start; }