Cihazın ekran çözünürlüğünü belirli bir biçimde [width]x[height]
(parantez olmadan) çıkarın . Örneğin, bir çıktı olabilir 1440x900
.
İşte kendi ekran çözünürlüğünüzü kontrol etmek için kullanabileceğiniz çevrimiçi bir test cihazı.
'0x0'
Cihazın ekran çözünürlüğünü belirli bir biçimde [width]x[height]
(parantez olmadan) çıkarın . Örneğin, bir çıktı olabilir 1440x900
.
İşte kendi ekran çözünürlüğünüzü kontrol etmek için kullanabileceğiniz çevrimiçi bir test cihazı.
'0x0'
Yanıtlar:
(_=screen)=>_.width+"x"+_.height
İşlev olarak çıktı verir return
. f=
Başlangıçta ekleyin ve benzeri çağırır f()
. Parametresi başlatmak için parametre başlatılıyor kullanır _
için screen
nesne. Gerisi kendi kendini açıklayıcıdır.
f=(_=screen)=>_.width+"x"+_.height
console.log(f())
Not: Bu işleve bir argüman iletmek başarısız olmasına neden olur.
with(screen)alert(width+"x"+height)
Bir gün kullanacağımı asla düşünmedim with
! Bunun daha fazla golf oynayabileceğini sanmıyorum.
s=screen,s.width+"x"+s.height
(29 karakter) da çalışır.
alert
: with(screen)(width+'x'+height)
sadece uygun dizeyi döndürür.
_=screen,_.width+"x"+_.height
* sigh * TI-BASIC, her küçük harf için fazladan bir bayt alır.
@Timtech sayesinde +2
-3 @Timtech sayesinde
:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240
Bu sadece işe yarar, çünkü TI-BASIC yalnızca iki farklı ekran çözünürlüğüne sahip hesap makinelerinde çalıştırılabilir: 96 x 64 ve 320 x 240. doğru çözünürlük çıktı.
Zor kodlanmış olduğu için bunu şimdilik rakipsiz olarak işaretliyorum.
ZDecimal
Farklı bir Xmax
karşılaştırma yapıp kullanmayarak ve en az bir bayt kullanarak tasarruf edebilirsiniz . Ayrıca, x
bir bayt büyük harf yerine iki bayt (x2) olan küçük harf kullanmanız gerektiğini düşünüyorum .
ZDecimal
Varsayılan yakınlaştırma ( ZStandard
) her iki hesap makinesinde de aynı olduğundan, iki baytlık bir Yakınlaştırma (gibi ) kullanmam gerekiyor . Yine de büyük harfleri düzelteceğim.
ZStandard
Yine de kullanırsanız ΔX
, hesap makineleri arasında daha farklı olurdu ? Ayrıca, ZDecimal
sadece bir bayt, bu yüzden bu 31 bayttır.
_=>(s=screen).width+'x'+s.height
console.log((_=>(s=screen).width+'x'+s.height)())
_=>(s=screen).width+'x'+s.height
bir bayt kazandırır
/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'
Çalışır system_profiler
, SPDisplaysDataType
bilgi alır, ilk so
girişi arar Resolution
ve ekran çözünürlüğünü yazdırır. Birden fazla ekran için bu, tüm çözünürlükleri yazdırır.
Önceki, uygun olmayan değişken:
/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'
2880x1800\n1920x1080@60Hz
(iki satır). Bunun diskalifiye edilip edilmediğini bilmiyorum ... veya?
@60Hz
açıkça spesifik değil.
|sed 1q
bayt sayısı 58 bayta kadar getirerek uğraşabilirsiniz.
awk
bir ekstra bayta ve alarak düzeltdim. :)
s=screen;alert(s.width+"x"+s.height)
SysGet,w,0
SysGet,h,1
Send,%w%x%h%
Bunu .AHK uzantılı bir dosyaya kaydedin ve komut isteminden çalıştırın
Send
yerine kullanmıyorsun MsgBox
?
Bir bayt tasarrufu için @Johan du Toit için teşekkürler!
#import<windows.h>
#define G GetSystemMetrics
f(){printf("%dx%d",G(0),G(1));}
#define G GetSystemMetrics f(){printf("%dx%d",G(0),G(1));}
-7 Martin Ender'e teşekkürler
-5 (aslında 12!) Leaky Rahibe'den Regex büyücüsü benden öte.
Bu uzun ama korkunç System.Windows.Forms.SystemInformation.PrimaryMonitorSize
çözümden daha uzun değil
(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
ilk önce Get-WmiObject
( gwmi
) biçimindeki bir dize olan Win32_VideoController
bir üyeyi içeren nesneyi almak için , sonra doğru formatı elde etmek için bir regex değiştirme çalıştırıyorum.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]+$"
regex tweaking birkaç byte tıraş.
SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x
Hangi cihazları bağladığınıza bağlı olarak bu sizin için çalışmayabilir (bilmiyorum). Bu her zaman çalışmalıdır (bağlı en az bir ekranınız varsayarak):
Infix[Last/@("FullScreenArea"/.SystemInformation["Devices","ScreenInformation"][[1]]),x]
SystemInformation[]
formun bir ifadesini döndürür
SystemInformationData[{
"Kernel" -> {__},
"FrontEnd" -> {__},
"Links" -> {__},
"Parallel" -> {__},
"Devices" -> {__},
"Network" -> {__},
}]
"Devices"
Doğrudan SystemInformation["Devices"]
veya olarak erişilebilen, ilgileniyoruz SystemInformation[][[1,5,2]]
. Sonuç, formun bir listesi olacaktır
{
"ScreenInformation" -> {__},
"GraphicsDevices" -> {__},
"ControllerDevices" -> {__}
}
Biz istiyoruz "ScreenInformation"
kadar ya erişilebilir olan SystemInformation["Devices","ScreenInformation"]
veya daha özlü olarak SystemInformation[][[1,5,2,1,2]]
. Sonuç formda olacak
{
{
"ScreenArea" -> {__},
"FullScreenArea" -> {{0,w_},{0,h_}},
"BitDepth" -> _,
"Resolution" -> _
},
___
}
Listenin uzunluğu bağladığınız ekran sayısı olacaktır. İlk ekran SystemInformation[][[1,5,2,1,2,1]]
ve genişlik ve yükseklik şu şekilde çıkarılabilir. SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]
Sonra sadece Infix
x
çıktı formatı için bir tane ekleriz.
String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}
Bu yöntem awt kütüphanelerini kullandığından başsız bir Java kurulumunda çalışmaz (TIO'da olduğu gibi). Kaputun altında, arayarakgetScreenSize
yapmak, ekran genişliği ve ekran yüksekliği için çağrı yapmak için Java Native Interface'i kullanır (tipik olarak bir C kütüphanesine).
-9 bayt, Olivier Grégoire sayesinde bana ipi basmak yerine iade edebileceğimi hatırlattı.
...x...
, çünkü void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}
hangi çıktılar 1920,1200
daha kısa ..
x
yerine yukarıda gösterdiğim şeyi kullanabildim ,
, ancak şu anki yanıtınızdan beş byte daha fazla: void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]","").replace(",","x"));}
ya da void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll(".*?(\\d+).*?(\\d+).*","$1x$2"));}
Ah, Java'da ağır olmayan ne var ..; p
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
-6 bayt @TheLethalCoder sayesinde bana OP'nin baskıdan bahsetmediğini hatırlattı, bu yüzden bir string döndürmek de iyi. Ve bir -6 bayt lambda değiştirerek.
Func<string>
: için derleyerek 11 bayt kaydedebilirsiniz ()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
. Bununla birlikte, bir geri dönüşünüz var void
ancak geri döndürüyorsunuz, string
bu nedenle 2 bayt eklemeniz gerekir.
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
var s=System.Windows.Forms.Screen.AllScreens[0].Bounds;
, aynı sayım da olacaktır, ancak bunu aklınızdan çıkarmadan golf oynayabilirsiniz.
read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}
xrandr
X sunucusuna ait, Ubuntu'da x11-xserver-utils tarafından sağlanmaktadır paketi .
Örnek çalışma:
bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080
xrandr|grep -oP '\d+x\d+'|line
Sayesinde:
Örnek çalışma:
bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080
xrandr|grep *
işe yarar mı?
grep
ve sed
girişimleri ayrıştırmak için xrandr
'ın çıkışı ( pastebin.com/uTVcjWCq ) uzun idi.
xrandr|grep *|cut -d' ' -f1
? (Yapıştırmanızdaki @ TIO satırındaki eşleşen satırı kullanarak )
from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)
print u(0),'x',u(1)
daha küçük ve onun örneği ( link ) izin veriyor
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.
Bu web sitesinde, her bölüm arasında boşluk var
Düzeltmeler için @Arjun ve @ StephenS'e teşekkürler .
fprintf('%ix%i',get(0,'ScreenSize')(3:4))
0
kök grafik nesnesinin bir tanıtıcısıdır. Özelliği 'ScreenSize'
, ekranın koordinatlarını piksel cinsinden içerir. Üçüncü ve dördüncü girişler istenen bilgileri verir.
' '⎕R'x'⍕⌽⊃⎕WG'DevCaps'
⎕WG'DevCaps'
Beyaz Doq G ve Dev buz kap abilitie s
⊃
ilk özelliği seç (yükseklik, genişlik)
⌽
ters
⍕
metin olarak biçimlendir
' '⎕R'x'
R ' "x", s eplace alanlarda
Ox`ØP(s×Çn)±d+"x"+ight
Sıkıştırılmış dize temsil eder with(screen)width+"x"+height
. Ox
bunu JavaScript olarak değerlendirir ve sonuç örtük olarak basılır.
(@AppleShell'in yardımından dolayı -4 karakter)
Evet. derler.
m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}
Çalıştır: gcc snippet.c -lSDL2 && ./a.out
m
küreselleştirerek ve ihmal ederek kısaltabilirsiniz int
:m[3];main(){...
m+1
kısa m[1]
mı olmalı ? veya bu C'de değil, sadece C ++ 'da mı mümkün? elbette printf'in bazı haklı göstergeleri var
Teşekkürler @ Jonathan-allan, @ felipe-nardi-batista
from Tkinter import*
print'%sx%s'%Tk().maxsize()
Tekli ekran kurulumları için bu, sitedeki çıktıyla eşleşir. Bu, birden fazla ekran için tam çözünürlük verir.
print'x'....
bir bayt kaydeder
v=Tk().maxsize()
, print'%sx%s'%v
9 bayt kaydeder.
print'%sx%s'%Tk().maxsize()
kaydetti 4> _ <
xdpyinfo|grep dim|cut -d' ' -f7
Man sayfasından:
xdpyinfo - is a utility for displaying information about an X server.
@Floris @manatwork Birkaç byte kaydettiğiniz için teşekkür ederiz!
-d\
yerine yazabilirsiniz -d' '
. Her iki gelince Sonra grep
bir hat ve için cut
o çizginin bir parçası, genellikle tek olan kısadır awk
çağrı: xdpyinfo|awk '/dim/&&$0=$2'
.
dimensions
ama xdpyinfo
sistemimde yok ...
grep *
yıldız işaretini dizindeki tüm dosyalara genişletir.
grep|cut
DİR awk
.
*0
. Benim xrandr çıktım *0 3360 x 1050 ( 889mm x 278mm ) *0
.
-f2
, kontrol edebilir misiniz xrandr|awk '/\*/{print $2}'
?
sadece bütünlüğü için:
PRINT "256x192"
çıktılar 256x192
. Spectrum'un sabit bir kablolu ekran çözünürlüğü var.
void setup(){fullScreen();print(width+"x"+height);}
Bu, bu formatta verir: width height
. Ayrıca, program kullandığınız ekranın boyutunda bir pencere oluşturur (çünkü her İşleme programı varsayılan olarak bir pencere oluşturur) ve bu program sadece bu pencerenin / çizimin yüksekliğini ve genişliğini verir.
WIDTHxHEIGHT
.
((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))
(Okunabilirlik için satır sonları eklendi)
Sonunda, html-toolkit modülüm biraz kullanım alıyor! Yalnızca Çevrimiçi Deneyin bağlantısında çalışır, komut satırından çalışmayacaktır.
1024 x 768
Geçerli çıktı olabilirse birkaç bayt kaydedilebilir . Sadece örtülü boşluklardan (+ .. "x" .. )
kaçınmak için kullanıyoruz print
.
2048x1080
gerçek bir 4K ekran için aslında 4096x2160
. Neden bir fikrin var mı? FreeBSD 11'deki Firefox 52.0
window.screen
ve alma width
ve height
ondan özelliklerini. Firefox konsolunu window.screen
açtıysanız ve yazdığınızda , görünüşte yanlış olduğunu göreceksiniz 2048x1080
.
$ set `xrandr`;echo $6x$8
3360x1050
İki monitörlü bir Cygwin makinesine yönlendirilmiş ekranı olan bir CentOS 5 kutusunda test edildi. İşte tam xrandr
çıktı
$ 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
puts `xrandr`.split[7..9].join[0..-2]
Alternatif çözüm (52 bayt):
puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join