Виведіть роздільну здатність екрана пристрою у визначеному форматі [width]x[height]
(без дужок). Наприклад, вихід може бути 1440x900
.
Ось онлайн-тестер, за допомогою якого можна перевірити власну роздільну здатність екрана.
'0x0'
Виведіть роздільну здатність екрана пристрою у визначеному форматі [width]x[height]
(без дужок). Наприклад, вихід може бути 1440x900
.
Ось онлайн-тестер, за допомогою якого можна перевірити власну роздільну здатність екрана.
'0x0'
Відповіді:
(_=screen)=>_.width+"x"+_.height
Виходи як функція return
. Додайте f=
на початку та посилайтеся на зразок f()
. Використовує ініціалізацію параметра для ініціалізації параметра _
до screen
об'єкта. Решта - сама роз'яснення.
f=(_=screen)=>_.width+"x"+_.height
console.log(f())
Примітка: Передача аргументу цій функції призведе до її відмови.
with(screen)alert(width+"x"+height)
Ніколи не думав, що буду використовувати один день with
! Я не думаю, що це може бути далі для гольфу.
s=screen,s.width+"x"+s.height
(29 символів) також працює.
alert
: with(screen)(width+'x'+height)
просто повертає відповідний рядок.
_=screen,_.width+"x"+_.height
29 байт
* зітхання * TI-BASIC займає додатковий байт для кожної малої літери.
+2 завдяки @Timtech
-3 завдяки @Timtech
:If ΔX>.1
:Then
:Disp "96x64
:Else
:Disp "320x240
Це працює лише тому, що TI-BASIC можна запускати лише на калькуляторах з двома різними роздільними здатностями екрана: 96 на 64 та 320 на 240. Я просто перевіряю, щоб побачити, який екран у мене є, встановивши масштаб на щось, що залежить від роздільної здатності екрана виведення правильної роздільної здатності.
Я зараз відзначаю це як неконкурентоспроможне, оскільки це важко закодовано.
ZDecimal
а потім використовуючи інше Xmax
порівняння, принаймні один байт. Крім того, я думаю, що вам потрібно використовувати малі регістри, x
які є двома байтами (x2) замість однобайтового верхнього регістру.
ZDecimal
), оскільки зум за замовчуванням ( ZStandard
) однаковий для обох калькуляторів. Я все-таки виправлю капіталізацію.
ZStandard
однак, чи ΔX
не відрізнятиметься вона між калькуляторами? Також ZDecimal
є лише один байт, тому це 31 байт.
_=>(s=screen).width+'x'+s.height
console.log((_=>(s=screen).width+'x'+s.height)())
_=>(s=screen).width+'x'+s.height
рятує байт
/*/*/sy*r SPDisplaysDataType|awk '/so/{print$2$3$4}'
Запускається system_profiler
, отримує SPDisplaysDataType
інформацію, шукає перший so
в Resolution
і друкує роздільну здатність екрана. На кількох екранах це друкує всі роздільні здатності.
Попередній, невідповідний варіант:
/*/*/sy*r SPDisplaysDataType|grep so|tr -d 'R :a-w'
2880x1800\n1920x1080@60Hz
(два рядки). Я не знаю, чи це дискваліфікує це ... чи?
@60Hz
явно не є специфікацією.
|sed 1q
, доводячи кількість байтів до 58 байт.
awk
один додатковий байт і маючи його. :)
s=screen;alert(s.width+"x"+s.height)
SysGet,w,0
SysGet,h,1
Send,%w%x%h%
Збережіть це у файлі з розширенням .AHK та запустіть його з командного рядка
Send
а не MsgBox
?
Дякуємо @Johan du Toit за збереження байта!
#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 дякую Мартіну Ендеру
-5 (насправді 12!) Від Leaky Nun , майстер Regex - поза мною.
Це довго, але не довше, ніж жахливе System.Windows.Forms.SystemInformation.PrimaryMonitorSize
рішення
(gwmi win32_videocontroller|% v*n)-replace" |x \d+\D+$"
спочатку ми Get-WmiObject
( gwmi
) для отримання Win32_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]+$"
голить пару байтів, підправляючи регулярний вираз.
SystemInformation[][[1,5,2,1,2,1,2,2,;;,2]]~Infix~x
Це може не працювати для вас залежно від того, які пристрої ви підключили (я не знаю). Це завжди має спрацювати (припустимо, що у вас підключений принаймні один екран):
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
для виводу.
String f(){java.awt.Dimension s=java.awt.Toolkit.getDefaultToolkit().getScreenSize();return s.width+"x"+s.height;}
Цей метод не працюватиме в безголовій установці Java (як у TIO), оскільки він використовує бібліотеки awt. Під капотом для виклику getScreenSize
використовується внутрішній інтерфейс Java для виклику (як правило, у бібліотеку С) для ширини та висоти екрана.
-9 байт завдяки Олів'є Грегоару за те, що він нагадав мені, що я можу повернути рядок замість того, щоб роздрукувати її.
...x...
, тому void f(){System.out.print((java.awt.Toolkit.getDefaultToolkit().getScreenSize()+"").replaceAll("[^\\d,]",""));}
що випуск 1920,1200
коротший ..
x
замість того ,
, щоб використовувати заміни регулярних виразів, але це на п’ять байтів більше, ніж ваша поточна відповідь: 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
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
-6 байт завдяки @TheLethalCoder , нагадуючи мені, що ОП не згадував про друк, тому повернення рядка також чудово. І додаткові -6 байт, змінивши його на лямбда.
Func<string>
: ()=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
. Однак у вас є повернення, void
але ви повертаєте, string
тому для цього потрібно додати 2 байти.
_=>{var s=System.Windows.Forms.Screen.PrimaryScreen.Bounds;return s.Width+"x"+s.Height;};
var s=System.Windows.Forms.Screen.AllScreens[0].Bounds;
було б те ж число, але ви можете взяти участь у гольфі з цією ідеєю.
read -aa<<<`xrandr`
echo ${a[7]}x${a[9]::-1}
xrandr
належить X-серверу, на Ubuntu надається пакет x11-xserver-utils .
Проба зразка:
bash-4.3$ read -aa<<<`xrandr`;echo ${a[7]}x${a[9]::-1}
1920x1080
xrandr|grep -oP '\d+x\d+'|line
Завдяки:
Проба зразка:
bash-4.3$ xrandr|grep -oP '\d+x\d+'|line
1920x1080
xrandr|grep *
працювати?
grep
та sed
спроби розбору xrandr
результатів ( pastebin.com/uTVcjWCq ) були довшими.
xrandr|grep *|cut -d' ' -f1
? (використовуючи відповідний рядок із вашої пасти @ TIO )
from ctypes import*
u=windll.user32.GetSystemMetrics;
print u(0),'x',u(1)
print u(0),'x',u(1)
менше, і його приклад ( посилання ) дозволяє
To clarify, If it's equivalent to the output from What is my screen resolution, It's valid.
на цьому веб-сайті є пробіл між кожною частиною
' '⎕R'x'⍕⌽⊃⎕WG'DevCaps'
⎕WG'DevCaps'
W indow G і ін Діви лід кришка abilitie з
⊃
вибрати першу властивість (висота, ширина)
⌽
реверс
⍕
формат у вигляді тексту
' '⎕R'x'
R eplace простору з «х» S
Ox`ØP(s×Çn)±d+"x"+ight
Стислий рядок являє собою with(screen)width+"x"+height
. Ox
оцінює це як JavaScript, і результат друкується неявно.
(-4 знаки завдяки допомозі @AppleShell)
Так. вона компілює.
m[3];main(){SDL_Init(32);SDL_GetDesktopDisplayMode(0,m);printf("%dx%d",m[1],m[2]);}
Виконати з: gcc snippet.c -lSDL2 && ./a.out
m
глобальний і int
m[3];main(){...
m+1
повинен бути коротшим, ніж m[1]
правильно? чи це неможливо в C, але тільки в C ++? Напевно printf має деякий знак маркування
Дякую @ Jonathan-allan, @ felipe-nardi-batista
from Tkinter import*
print'%sx%s'%Tk().maxsize()
Для одиночних налаштувань дисплея це відповідає результатам із сайту. Це дає повну роздільну здатність для декількох дисплеїв.
print'x'....
рятує байт
v=Tk().maxsize()
, print'%sx%s'%v
економить 9 байт.
print'%sx%s'%Tk().maxsize()
зберігає ще 4> _ <
xdpyinfo|grep dim|cut -d' ' -f7
З чоловічої сторінки:
xdpyinfo - is a utility for displaying information about an X server.
@Floris @manatwork Дякую за збереження кількох байтів!
-d\
замість -d' '
. Тоді , коли мова йде як grep
для лінії і cut
частини цієї лінії, як правило , коротше , з одним awk
викликом: xdpyinfo|awk '/dim/&&$0=$2'
.
dimensions
але я не маю xdpyinfo
своєї системи ...
grep *
розширює зірочку на всі файли в каталозі.
grep|cut
є awk
.
*0
. Мій вихід xrandr *0 3360 x 1050 ( 889mm x 278mm ) *0
.
-f2
, чи можете ви перевірити xrandr|awk '/\*/{print $2}'
?
тільки для повноти:
PRINT "256x192"
виходи 256x192
. Спектр має фіксовану роздільну здатність екрану.
void setup(){fullScreen();print(width+"x"+height);}
Це виводить в наступному форматі: width height
. Крім того, програма створює вікно, яке має розмір екрана, який ви використовуєте (оскільки кожна програма для обробки створює вікно за замовчуванням), і ця програма просто виводить висоту та ширину цього вікна / ескізу.
WIDTHxHEIGHT
.
((import html-toolkit)
(htmlOnLoad #::((var S(index(getWindow)screen))
(print(+(index S width)"x"(index S height))))))
(Для читання додано розриви рядків)
Нарешті, мій модуль html-інструментарію отримує деяке використання! Працює лише за посиланням "Спробуйте в Інтернеті", але не працює з командного рядка.
Кілька байтів можна зберегти, якщо 1024 x 768
можна отримати дійсний вихід. Ми просто використовуємо, (+ .. "x" .. )
щоб уникнути print
неявного інтервалу.
2048x1080
про справжній 4K-екран, який є насправді 4096x2160
. Будь-яка ідея чому? Firefox 52.0 на FreeBSD 11.
window.screen
і отримання width
і height
атрибути з нього. Я думаю, якщо ви відкрили консоль Firefox і ввели її, window.screen
ви побачите, мабуть, неправильні 2048x1080
.
$ set `xrandr`;echo $6x$8
3360x1050
Тестували на коробці CentOS 5 з дисплеєм, перенаправленим на машину Cygwin з двома моніторами. Тут повний 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
puts `xrandr`.split[7..9].join[0..-2]
Альтернативне рішення (52 байти):
puts `xrandr`.match(/t (\d+) (x) (\d+),/)[1..3].join