画面解像度を教えてください!


33

特定の形式でデバイスの画面解像度を出力します[width]x[height](括弧なし)。たとえば、出力は次のようになります1440x900

以下は、独自の画面解像度を確認するために使用できるオンラインテスターです。


17
特定の出力形式は楽しいものではありませんが、おそらく今では変更するには遅すぎます
ルイスメンドー

3
複数のディスプレイが接続されている場合の動作はどうなりますか?
ジョナサンアラン

4
最初に解像度を変更してから、それらの値を伝えることは許可されていないと思いますよね?
エンジニアトースト

3
:APL \ 360は、5バイト(IBM / 360タイプライターの環境でのみ実行することができます)'0x0'
アダム

4
私はこれがほとんどのゴルフ言語を失格にし、人々が実用的な言語の限界を探求することを奨励するのが好きです。
ロビー

回答:


38

JavaScript(ES6)、32バイト

(_=screen)=>_.width+"x"+_.height

functionとして出力しますreturnf=最初に追加して、のように呼び出しf()ます。パラメーター初期化を使用して、パラメーター_screenオブジェクトに初期化します。残りは一目瞭然です。

f=(_=screen)=>_.width+"x"+_.height
console.log(f())

注:この関数に引数を渡すと、失敗します。


JavaScript(以前のソリューション)、35バイト

with(screen)alert(width+"x"+height)

私はいつか使うとは思わなかったwith!これ以上ゴルフができるとは思いません。


REPLが許可されている場合、s=screen,s.width+"x"+s.height(29文字)も機能します。
コビ

おー デフォルトの引数値を適切に使用します。
マシュー盧

35バイトのソリューションでは、alert:を気にせずに5バイトを節約できwith(screen)(width+'x'+height)ます。適切な文字列を返すだけです。
KRyan

2
この答えには根本的な欠陥があります。ブラウザーをズームインおよびズームアウトすることでごまかすことができます!
グレートダック

1
さあ、皆さんもしようとしている:_=screen,_.width+"x"+_.height、29バイト
M28

33

TI-BASIC、30 32 29バイト(競合しない?)

*ため息* TI-BASICは、小文字ごとに余分なバイトを取ります。

+2 @Timtechに感謝

-3 @Timtechに感謝

:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240

TI-BASICは、96 x 64と320 x 240の2つの異なる画面解像度の計算機でのみ実行できるため、これは機能します。正しい解像度を出力します。

これはハードコーディングされているので、今のところ非競合としてマークしています。


6
賢い虐待ザッツ;)
マシュー盧

1
少なくとも1バイトのZDecimal異なるXmax比較を使用せずに使用することで保存できます。また、1 xバイトの大文字の代わりに2バイト(x2)の小文字を使用する必要があると思います。
ティムテック

@Timtech ZDecimalデフォルトのズーム(ZStandard)は両方の計算機で同じであるため、2バイトのズーム(など)を使用する必要があります。ただし、大文字を修正します。
スコットミルナー

1
ああ、私はあなたが何を意味するかわかります。あなたがZStandardしかし使用する場合ΔX、電卓間で異なるでしょうか?また、ZDecimal1バイトだけなので、これは31バイトです。
ティムテック

2
何らかの理由で、私の即座の反応は「それは有効ですが、可能な画面解像度が1つしかない場合は無効になります」が、その見方は内部的に矛盾しているようです。だから、これが不正行為であるかどうかは本当にわかりません。

20

JavaScript(ES6)、32バイト

_=>(s=screen).width+'x'+s.height

console.log((_=>(s=screen).width+'x'+s.height)())


2
ラムダバージョンは受け入れ可能です
フェリペナルディバティスタ

6
_=>(s=screen).width+'x'+s.heightバイトを節約
フェリペナルディバティスタ

@FelipeNardiBatistaありがとう、ちょうど私にも考えが起こった:)
SethWhite

1
よくやった!+1 :)
アルジュン

5
すべてのJSエントリが、他の多数の回答より一貫して短くなっていることが大好きです。ほとんど起こりません。
Draco18s

11

macOS、bash、awk、grep、tr、51 52バイト

/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'

を実行しsystem_profilerSPDisplaysDataType情報を取得し、の最初のものsoを検索しResolution、画面解像度を印刷します。複数の画面の場合、これはすべての解像度を印刷します。

Example of the command running.


以前の不正なバリアント:

/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'

MacBook Proで2台目のディスプレイを接続してこれを実行しました。取得しました2880x1800\n1920x1080@60Hz(2行)。これで失格になるかどうかはわかりません...または?
フローリス

@Floris OPは、複数の画面がある場合の動作を指定しましたか?
キャプテンマン

いいえ-しかし、形式@60Hzは明らかに仕様にありません。
フローリス

を追加して|sed 1q、バイトカウントを最大58バイトにできると思います。
zgrep

awk余分な1バイトに切り替えて追加することで、違反を修正しました。:)
zgrep


9

処理3、37バイト

fullScreen();print(width+"x"+height);

fullScreen()最大サイズ-ディスプレイ解像度でアプリを起動します。明らかなものより1バイト少ない

print(displayWidth+"x"+displayHeight);

8

AutoHotKey、34バイト

SysGet,w,0
SysGet,h,1
Send,%w%x%h%

これを拡張子.AHKのファイルに保存し、コマンドプロンプトから実行します


1
Sendではなくを使用してみませんMsgBoxか?
エンジニアトースト

@EngineerToastありがとう!2バイト保存されている
jmriego

7

C(Windows)、79 78 77バイト

バイトを保存してくれた@Johan du Toitに感謝します!

#import<windows.h>
#define G GetSystemMetrics
f(){printf("%dx%d",G(0),G(1));}

2
私はあなたの答えを見てまで、私はまだ「のGetDeviceCaps」でいじりました:-)あなたはすることができ、まだ次を使用して、1バイトの保存:#define G GetSystemMetrics f(){printf("%dx%d",G(0),G(1));}
ヨハン・デュToit

7

PowerShell、67 60 55バイト

-7 Martin Enderに感謝

-5(実際には12!)Leaky Nunから、正規表現の魔法は私を超えています。

これは長いですが、恐ろしいSystem.Windows.Forms.SystemInformation.PrimaryMonitorSize解決策より長くはありません

(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"

まず、Get-WmiObjectgwmiWin32_VideoControllerという名前のメンバーを含むオブジェクトを取得します。これは、VideoModeDescriptionの形式の文字列1920 x 1080 x 4294967296 colorsです。次に、正しい形式を取得するために正規表現の置換を実行します。

PS H:\> (gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
1920x1080

(gwmi win32_videocontroller|% v*n)-replace" |x[^x]+$"は正規表現を微調整することで数バイトを削ると思います。
-TessellatingHeckler

6

Mathematica、51バイト

SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x

これは、接続したデバイスによっては機能しない場合があります(わかりません)。これは常に機能するはずです(少なくとも1つの画面が接続されていると仮定します)。

Infix[Last/@("FullScreenArea"/.SystemInformation["Devices","ScreenInformation"][[1]]),x]

説明

SystemInformation[] フォームの式を返します

SystemInformationData[{
  "Kernel" -> {__},
  "FrontEnd" -> {__},
  "Links" -> {__},
  "Parallel" -> {__},
  "Devices" -> {__},
  "Network" -> {__},
}]

私たちは、に興味がある"Devices"ように直接アクセスすることができ、SystemInformation["Devices"]またはとしてSystemInformation[][[1,5,2]]。結果は、フォームのリストになります

{
  "ScreenInformation" -> {__},
  "GraphicsDevices" -> {__},
  "ControllerDevices" -> {__}
}

我々はしたい"ScreenInformation"とのいずれかにアクセスすることができ、SystemInformation["Devices","ScreenInformation"]またはより簡潔などSystemInformation[][[1,5,2,1,2]]。結果は次の形式になります

{
  {
  "ScreenArea" -> {__},
  "FullScreenArea" -> {{0,w_},{0,h_}},
  "BitDepth" -> _,
  "Resolution" -> _
  },
  ___
}

リストの長さは、接続した画面の数になります。最初の画面はでSystemInformation[][[1,5,2,1,2,1]]あり、幅と高さは次のように抽出できます。SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]次にInfix x、出力形式用に挿入します。


6

Java 7、123 114バイト

String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}

このメソッドはawtライブラリを使用するため、Javaのヘッドレスインストール(TIOなど)では機能しません。内部では、呼び出しgetScreenSizeはJava Native Interfaceを使用して、画面の幅と画面の高さを(通常はCライブラリに)呼び出します。

文字列を印刷する代わりに返すことができることを思い出させてくれたOlivierGrégoireに感謝します。


2
私は...ちょうどポストを約あった
漏れ尼僧

@LeakyNunあなたと私は両方。+1 ポケ
ケビンCruijssen

残念出力はに制限されている...x...ので、void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}その出力は1920,1200短い..です
ケビンCruijssen

1
@KevinCruijssenええ、私もそれで遊んでみました。本当の「ひどい」ことは、Javaで正規表現を使用すると、バイト数が非常に多くなることです。
ポケ

1
@Pokeあなたは確かに正しいです。私が使用することができたこと、私がして上に示して何xの代わりに、,いくつかの正規表現の置換を使用することによって、それはあなたの現在の答えよりも、5バイト以上だ:void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]","").replace(",","x"));}またはvoid f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll(".*?(\\d+).*?(\\d+).*","$1x$2"));}Javaで重くないもの、ああも...; P
ケビンCruijssen

6

C#、101 95 89バイト

_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};

@TheLethalCoderのおかげで、OPが印刷について言及していなかったことを思い出させて-6バイトのおかげで、文字列を返すことも問題ありません。そして、ラムダに変更することにより、追加の-6バイト。


Func<string>:にコンパイルすることで11バイト節約できます()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};。しかし、あなたはのリターンを持ってvoidいますが、戻ってきているstringあなたは、そのために2つのバイトを追加する必要がありますので。
-TheLethalCoder

1
課題はまた、別のバイトすなわちを保存するために、未使用の入力を追加することができますので、あなたが入力を取ることができないという状態ではないん_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
TheLethalCoder

1
結果を書き出すリターンコメントは無視してください。それを返すことで6バイト節約できます。
-TheLethalCoder

そして、短くする方法を考えられない限りvar s=System.Windows.Forms.Screen.AllScreens[0].Bounds;、同じカウントになりますが、その考えを念頭に置いてゴルフをすることができます。
-TheLethalCoder

6

Bash + xrandr、44文字

read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}

xrandrXサーバーに属し、Ubuntuではx11-xserver-utilsパッケージで提供されます。

サンプル実行:

bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080

xrandr + grep + util-linux、30文字

xrandr|grep -oP '\d+x\d+'|line

おかげで:

サンプル実行:

bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080

ディスプレイ付きのbashがありません、xrandr|grep *動作しますか?
ジョナサンアラン

確かに。しかし、今の私grepsed解析しようとする試みxrandrの出力(pastebin.com/uTVcjWCqが)長かったです。
マナトワーク

たぶんxrandr|grep *|cut -d' ' -f1?(ペースト@ TIOから一致する行を使用)
ジョナサンアラン

ああ、「*」マークでリストから解像度を選択するつもりですか?その可能性を考えましたが、接続された複数のディスプレイで動作するかどうかはわかりません。私が覚えているように、それは各接続されたディスプレイの現在の解像度をリストするでしょう。
マナトワーク

ああ、そうです、そのようなシナリオでOPが何を望んでいるのかわかりません!
ジョナサンアラン

5

Python 2、73バイト

from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)

print u(0),'x',u(1)小さく、彼の例(リンク)で許可されています
フェリペナルディバティスタ

1
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.そのウェブサイトでは、各部分の間にスペースがあります
フェリペナルディバティスタ

@FelipeNardiBatista更新、ありがとう。
ニール

5

オクターブ、41バイト

訂正してくれた@Arjun@StephenSに感謝します。

fprintf('%ix%i',get(0,'ScreenSize')(3:4))

0ルートグラフィックスオブジェクトへのハンドルです。プロパティ'ScreenSize'には、画面の座標がピクセル単位で含まれています。3番目と4番目のエントリは、必要な情報を提供します。


5

APL(Dyalog)、23バイト

' 'R'x'⍕⌽⊃⎕WG'DevCaps'

⎕WG'DevCaps'W indow GのDevアイスキャップ abilitie

 最初のプロパティ(高さ、幅)を選択します

 逆

 テキストとしてフォーマット

' '⎕R'x'Rの "X" sのeplaceスペース


「位置5(スペース)の「x」で置換」すると、小さな画面で問題が発生します。たとえば、640x480(VMが使用)
-Baldrickk


4

C(SDL2ライブラリ)113 88 84

(@AppleShellのヘルプによる4文字)

はい。コンパイルします。

m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}

で実行: gcc snippet.c -lSDL2 && ./a.out


3
私はあなたがすることによってこれを短縮することができると思いmグローバルと省略するintm[3];main(){...
Appleshell

によるアクセスm+1は、m[1]右よりも短くする必要がありますか?それともCでは可能ですが、C ++でのみ可能ですか?確かにprintfには逆参照トークンがあります
ギズモ

@gizmo残念ながら私の知る限り、このようなことを行いまったくprintfの指定はありません...
ディーター・

4

パイソン2、61の 49バイト

ありがとう@ Jonathan-allan、@ felipe-nardi-batista

from Tkinter import*
print'%sx%s'%Tk().maxsize()

単一ディスプレイ設定の場合、これはサイトからの出力と一致します。これにより、複数のディスプレイの解像度全体が得られます。


print'x'....バイトを保存します
フェリペナルディバティスタ

v=Tk().maxsize()print'%sx%s'%v9バイトを節約します。
ジョナサンアラン

おっと、print'%sx%s'%Tk().maxsize()さらに4つを保存します> _ <
ジョナサンアラン

3

bash + xdpyinfo 42 31バイト

xdpyinfo|grep dim|cut -d' ' -f7

manページから:

xdpyinfo - is  a utility for displaying information about an X server.

@Floris @manatwork数バイト節約してくれてありがとう!


取り消し線4はまだ4です:(
クリストファー

パイプの周りにスペースを入れる必要はありません。「薄暗い」のみを検索しても安全だと思います。の-d\ 代わりに書くことができます-d' '。次にgrep、回線とcutその回線の一部の両方について、通常は1回のawk呼び出しで短くなりますxdpyinfo|awk '/dim/&&$0=$2'
マナトワーク

私はあなたがより短い何かdimensionsxdpyinfo
フローリス

3

xrandr + awk、25バイト

xrandr|awk /\*/{print\$1}

ここに画像の説明を入力してください


1
これは機能しません。grep *ディレクトリ内のすべてのファイルにアスタリスクを展開します。
イェンス

@Jens修正済み。指摘してくれてありがとう
パンディア

ありがとう。別のヒント:の正しいスペルはgrep|cutですawk
イェンス

それでも動作しません。出力します*0。私のxrandr出力は*0 3360 x 1050 ( 889mm x 278mm ) *0です。
イェンス

@Jens次にBtwが必要-f2です、確認できますかxrandr|awk '/\*/{print $2}'
パンディア

3

ZX Spectrum Basic、10バイト

完全を期すために:

PRINT "256x192"

出力256x192。Spectrumには固定された画面解像度があります。


...また、PRINTなどのキーワードに1バイトを使用します。
イェンス

2

処理、51バイト

void setup(){fullScreen();print(width+"x"+height);}

これは次の形式で出力しますwidth height。また、プログラムは、使用している画面のサイズのウィンドウを作成します(すべての処理プログラムはデフォルトでウィンドウを作成するため)。このプログラムは、このウィンドウ/スケッチの高さと幅を出力するだけです。


ああ、形式はWIDTHxHEIGHTです。
マシュー盧

@SIGSEGV気がついた
Kritixi Lithos

2

xdpyinfo+ awk、28バイト

$ xdpyinfo|awk /dim/{print\$2}
3360x1050

デュアルヘッドのCygwinでテスト済み。


1
xdpyinfo|awk /dim/{print\$2}24ではなく28バイトかかります
パンディア

@Pandya新しいメガネが必要です:
イェンス


1

Lithp、116バイト

((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))

(読みやすくするために改行が追加されました)

オンラインでお試しください!

最後に、私のhtml-toolkitモジュールが使用されます![オンラインで試す]リンクでのみ機能し、コマンドラインからは機能しません。

1024 x 768有効な出力である場合は、数バイトを節約できます。の暗黙的な間隔(+ .. "x" .. )を避けるために使用しprintます。


うーん オンラインで試してみましたが、2048x1080実際には4Kの真の画面が表示されます4096x2160。理由は何ですか?FreeBSD 11上のFirefox 52.0
Jens

わからない。私は単につかんだwindow.screenと取得widthし、heightそこから属性を。Firefoxコンソールを開いて入力するwindow.screenと、明らかに間違って2048x1080いることがわかります。
アンドラキス

1

Lua(löveフレームワーク)、116バイト

f,g=love.window.setFullscreen,love.graphics function love.draw()f(1)w,h=g.getDimensions()f(0>1)g.print(w.."x"..h)end

プログラムは最初にフルスクリーンに変更し、次に幅と高さを取得して印刷します:)


1

xrandrおよびsh、23バイト

$ set `xrandr`;echo $6x$8
3360x1050

2台のモニターを備えたCygwinマシンにリダイレクトされたディスプレイを備えたCentOS 5ボックスでテストされました。ここで、完全なxrandr出力は

$ xrandr
 SZ:    Pixels          Physical       Refresh
*0   3360 x 1050   ( 889mm x 278mm )  *0
Current rotation - normal
Current reflection - none
Rotations possible - normal
Reflections possible - none

1

Ruby + xrandr、37バイト

puts `xrandr`.split[7..9].join[0..-2]

代替ソリューション(52バイト):

puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join

1

、26バイト

system/view/screens/1/size

たとえば、出力:

1920x1080

コードは自明です。1最初の画面を指し

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.