• ベストアンサー

【シェル】 定数に優先順位をつける方法を探しています

トランプのゲームをbash(またはcsh)で組もうと思っています。 2 > 1 > K > Q > J > 10 > 9 … という具合に、数値やアルファベットに大小の優先順位をつけたいのですが、方法はないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • zuihen
  • ベストアンサー率36% (4/11)
回答No.2

niceのように……ですか。 シェルスプリクトの用途からして、不可能でしょう。 様々なプログラミング言語でも"評価順位"を勝手にいじくり回す事はできません。 なぜなら、2やKの評価順位を変更した場合、実行時等に 2やK用の、対応する"評価順位"を記録する必要があり、 それは先述の2→15といった変換に比べてコストが大きいからです。 ですから、niceのような設定はできません。 先述のような解決法が一番だと思います。

scorpio
質問者

お礼

了解しました。 わかりやすい解説をありがとうございました。 質問を締め切ります。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • zuihen
  • ベストアンサー率36% (4/11)
回答No.1

bashですか!? シェルで組もうと思った事は無いので一般論で書きますが… J→11, Q→12, K→13, 1→14, 2→15 として数の大小で処理し、表示/出力段階で元に戻す…としたらいかがでしょう。

scorpio
質問者

補足

ご回答ありがとうございます。 実はその方法は最後の手段として考えていました。 短くまとめたいので、なんとか優先順位をセットしたいです。 nice がプロセスだけでなく、変数にもセットできれば一番かっこいいんですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C#で、優先順位をつけてメソッドの呼び出しを調整したいのですが、どんな

    C#で、優先順位をつけてメソッドの呼び出しを調整したいのですが、どんな方法があるでしょうか? ・メソッドA,B,Cがある ・共通に利用するメソッドQがある ・A,B,Cは、別々のスレッドからメソッドQを呼び出す ・他のメソッドがQを利用している間は、B、Cは待ち状態にしたい ・A>B>Cの優先順位があり、BがQを使用していて、Cが待ち状態の時、その後AがメソッドQを利用を要求したら、次にQを使えるのはAにしたい どうぞよろしくお願いします。

  • 中古車買う場合の優先順位について

    中古車買う場合の優先順位について 近々中古車(軽自動車)を購入予定で色々見ています。 そこでつまらない質問です。 中古車の売値は色々な要素で決められていると思います。 年式、走行距離、機関の具合、傷の程度、車検残等々・・・ 我々素人がやはり見るところは、走行距離と年式あたりだと思いますが、 1,2年古くても距離が出ていない中古と、多少距離は出ていても少しでも新しい年式では どちらを選びのが基本なのでしょうか? 勿論固体差があり一概には言えないことは十分に分かっています。 色々見ていると販売店の値付けは距離優先で多少古くても距離が出ていないほうが高値になっている ように思います。 それと、やっぱり軽は10万キロ超は厳しいですよね?(買いませんが)

  • UEFI では毎回手動で優先順位を入れ替えなければ

    私の PC [Windows 10 Home 64bit] の UEFI (BIOS) についての質問です。 私は普段、 HDD の Windows 10 から起動させています。 しかし、 光ディスクや USBメモリなどを入れて起動させたい場合もあります。 [イメージ バックアップへの巻戻し] [MemoryTest86+ の実行] などです。 私が以前に持っていた Windows 7 の PC (BIOS) では、 光ディスク、 USBメモリ、 を挿入した場合のみ、 それが Windows OS より先に起動していました。 私は [当然、 新しい PC (UEFI) でも、 同じ動作だろう] と思い込んでいました。 しかし、 実際には違いました。 それらのデバイスを挿入して電源を入れても認識されませんでした。 UEFI の優先順位を確認すると、 Windows 10 の HDD が最優先になっていました。 購入時からの不具合とおもい、 優先順位を USB Memory や CD/DVD Drive を先にしました。 すると、 いかのメッセージだけしか表示されなくなりました。 Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key つまり、 UEFI では、 Windows 10 HDD が一番先でなければ絶対に起動できませんでした。 そして、 USB Memory や CD/DVD から起動したい場合には、 UEFI 画面で優先順位をかえてから リブートしなければいけませんでした。 その後、 再び UEFI 画面で優先順位を Windows 10 HDD に戻さなければいけませんでした。 私は、 これを私の購入した PC [MSI製 マザーボード UEFI Version E7721ATQ V6.0B1] だけの不具合だと判断していました。 しかし、 その後、 インターネットで検索すると、 全く同じ症状が掲載されていました。 ************************************************** 従来のBIOSとの違いで戸惑うことの一つが起動順序の設定である。  BIOSでは、OSの入っているドライブに優先してFloppy DriveやCD ROMを先順位に設定しておくことができた。しかし、UEFIでは、Windowsをインストールした場合、「Windows Boot Manager」がBoot Option Prioritiesの第1位に表示され、これを後順位に変更してしまうと、先順位に何らかの起動可能なディバイスがなければ、「Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key_」と表示されたままブート・プロセスが停止してしまう。従って、「Windows Boot Manager」は起動順位の第1位にしておかなければならない。  一時的にFloppy DriveやCD ROMから起動したい場合は、電源投入直後にBoot Menuを表示させて該当ディバイスを選択することになる。 http://blog.phooen.com/blog-entry-50.html ************************************************** この情報によると、 これは UEFI というシステム自体の不具合であり、 全世界の UEFI で共通の不具合ということになります。 BIOS の頃は上記のような優先順位変更は必要なかったにもかかわらず、 UEFI という最低最悪の新システムのせいで、 世界中の PC で同じ不具合が起きているらしいのです。 これ以上の情報がインターネットには存在しませんでした。 そのため、 ここで質問させていただきます。 ・上記は本当に UEFI というシステムじたいの不具合なのかを教えてください。 ・あなたの PC でも同じ不具合が発生するのかを教えてください。 当然ですが、 あなたの PC がUEFI であることが前提です。 ・私が優先順位を毎回変更しなくてもすむためには、 どうすればいいのかを教えてください。 面倒な質問かもしれませんが、 これに関する情報は日本中のインターネットに実在しないため、 ここに情報が掲載されれば多くの人に役に立つはずです。 よろしく お願い致します。 ************************************************** 注意: OKWave の不具合により、いかのエラーのため返答できませんが、全部の回答を見ています。 ---------------------------------------- この操作は実行できません。 再度ログインをお試しいただき、改めて操作手順をご確認ください。 問題が解決しない場合は、FAQを御確認のうえ、お問い合わせください。 ---------------------------------------- この不具合について OKWave 管理者に問い合わせても、嘘の返答があるだけなので無駄です。 http://okwave.jp/qa/q9226301.html

  • シェルで and/or の優先順位について

    echo "" echo " $BAR1 | $BAR2 | $BAR3 " echo "  ̄ ̄ ̄ ̄ ̄ ̄ ̄" echo " $BAR4 | $BAR5 | $BAR6 " echo "  ̄ ̄ ̄ ̄ ̄ ̄ ̄" echo " $BAR7 | $BAR8 | $BAR9 " echo "" if [ $BAR1 -eq $BAR2 -a $BAR1 -eq $BAR3 -o \ $BAR4 -eq $BAR5 -a $BAR4 -eq $BAR6 -o \ $BAR7 -eq $BAR8 -a $BAR7 -eq $BAR9 -o \ $BAR1 -eq $BAR5 -a $BAR1 -eq $BAR9 -o \ $BAR7 -eq $BAR5 -a $BAR7 -eq $BAR3 ]; then SCORE=`expr $SCORE + 700` else SCORE=`expr $SCORE - 30` fi echo "" echo " スコアは【 $SCORE 】 です。 " echo "" 簡単なスロットゲームを作ってみました。C言語では可能な AND/ORの優先順位づけ()がbashでも機能するでしょうか?自分なりにGoogleを探ってみましたが、満足のいく回答は見つけられませんでした。 以下の例では、エラーを返しました。 if [ (($BAR1 -eq $BAR2) -a ($BAR1 -eq $BAR3)) -o \ (($BAR4 -eq $BAR5) -a ($BAR4 -eq $BAR6)) -o \ … なお、manコマンドで以下の説明を見つけましたが、知識が足りずよく意味がわかりません。 なお、コピペの都合上、スペースやタブなどが反映されず、スクリプトが見づらくなっていますが、ご容赦願います。 ************************************************************* (list) list はサブシェル内で実行されます。シェルの環境に影響を与えるような変数の代入や組み込みコマンドは、コマンドの終了後に影響を残しません。返却ステータスは list の終了ステータスです。

  • 順位を求める計算式

    1つのBookに10のSheetがあります。 それぞれのSheetのG5に数値が入っています。 また、それぞれのSheetにK5があります。 Sheet1からSheet10のG5を対象とした順位をSheet1のK5に表示させたいのですが方法はどうすればいいでしょうか? (例)Sheet3までの場合 Sheet1のG5 に300 が入力されている Sheet2のG5 に150 が入力されている Sheet3のG5 に200 が入力されている このデータの順位を Sheet1のK5 に表示させるという関数です。 Excel 2013です。       

  • 順位を求める時の考え方

    最近答えた質問で、力不足でお役に立たなかったランキングの考え方を教えてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1235529 No.5ではこう考えました。 勝ち数、負け数、年齢を2桁までとし、 全部の数字を足した時に重要なものから大きい桁の2桁ずつに表示されるように それぞれに数字をかけました(勝率に100をかけて桁を揃えます)。 この合計数で大きいものから順位をつけて行きたいと思ったのです(年齢にマイナスを掛けたのは間違い)。 更に後半では質問者さんから 同順位になったときに、どう判断させるかが詳しく書かれています。 考え方は面白いと思うのですが、 頭が働かず、質問者さんがおっしゃっている本当の考え方を100%理解することができませんでした。 ためしにExcelで作った表は次のようなものでした。 Excelをお持ちの方はお試しください。 B1から右に 勝数、負け、試合数、勝率5割以上か、勝率、年齢、作業列、ランク、A、B・・・~H A2から下にA~H B2に =SUM(J2:Q2)←下までコピー C2に {=TRANSPOSE(J10:Q10)}    ↑C2:C9を選択して=TRANSPOSE(J10:Q10)と入力し、Ctrlを押しながらShiftを押しながらEnterキーを押す。 D2に =IF(C2="","",SUM(B2:C2))←下までコピー E2に =F2>=0.5 F2に =B2/D2←下までコピー G2から下に年齢を統一し、全部20と入力 H2に =B2*10000+E2*10000+F2*100+G2←これを右にコピー I2に =RANK(H2,$H$2:$H$9) J2を灰色に塗りつぶし、ここに入力できないという目印にします。 右下のセルを一つずつ塗ってゆきます(自分と自分の対戦はできないため)。 H10に =SUM(J2:J9) 私は優先順位をよく理解していないようです。 たまたまExcelで作ったのですが、Excelをお持ちの方もそうでない方も この順位の考え方を私にもわかるように説明していただけないでしょうか。 本当にこういった考え方が苦手なのです。

  • TCGの大会における順位の決定方法について

    TCGの大会で順位を決める方法として、 1.得点  ↓ 2.勝率  ↓ 3.オポーネントの得点  ↓ 4.オポーネントの勝率 という原則があります。この「3と4」なのですが、イマイチ計算方法がわかりません。私がやっているTCGはガンダムウォーといいますが、ガンダムウォーの公式ホームページでは、下記のように書いています ● 最終順位 以下の優先順位で総合順位を決定します。 (1)「得点」 (2)本日の自分勝率(勝利ゲーム数÷全ゲーム数) (3)最終的に得点の高いプレイヤーとより多く対戦してきたプレイヤー。 (4)最終的に勝率の高いプレイヤーとより多く対戦してきたプレイヤー。   以上の順に比較し、順位が決定されます。 (上位入賞者で同点、同率の場合は「決定戦」を行う場合もあります。 っとは書いていますが、公式ホームページ内では計算式などは書いておりません。どなたか教えてください。たぶん、どのTCGでもオポーネントの計算の仕方一緒だと思いますので。

  • 選択の結果によって表示させるページを決める方法

    こんにちわ。 HTMLについてまだ勉強中の為に、いろいろ教えていただけると助かります。 今、アンケートページを作っておりまして、質問数は5問、答えは「YES」と「No」の2択の みになります。 各質問で「No」が選択された場合に特定のページに飛ばす形で、答えには優先順位が 決まっており 優先 高い Q1 > Q2 > Q3 > Q4 > Q5 低い と、優先順位が高い質問で「No」が選択された場合、他の答えに関係なく特定のページに 飛ばす形にしたいと思います。 ネットを使い調べていますが、答えに優先順位を付けて結果を出す方法がどうしても分か りませんので、教えていただけませんか? よろしくお願い致します。

  • エクセルでランダムな数値を作成する方法?

    よろしくお願いします。 エクセルでランダムな数値(数字、アルファベット大小文字)を作成する方法を教えて頂けますでしょうか? 初期パスワード(8文字)の作成を検討しています。 不明な点がありましたらご質問ください。 よろしくお願い致します。

  • エクセルでのソート

    エクセル2000を使っています、ソートについて質問させていただきます。 例えば、 88J001・・・88J055 88N001・・・88N011 88A001・・・88A0088 8K001・・・88K020と有る名簿を(上から下に並んでいます)、 左から3文字目に有るアルファベットを最優先キーに、数字3桁を2番目に優先するキーにし、アルファベット順ではなく、K、N、J、A、Hと有るようにソートしたいのですが、どのような操作をすればよろしいでしょうか?