Detect MS Windows
MATLAB, 4 bytes
ispc
From the documentation:
tf = ispc
returns logical 1 (true) if the version of MATLAB® software is for the Microsoft® Windows® platform. Otherwise, it returns logical 0 (false).
There are also the functions ismac
and isunix
. I'll leave it to the reader to figure out what those functions do. Mego kindly asked for diagrams explaining ismac
and isunix
so I've tried to illustrate it here:
It was not asked for a diagram of ispc
but I can reveal that the behaviour is pretty similar, except substitute OSX
and Unix
with Windows
.
Second approach:
Here's a second approach with getenv
using 23 bytes that should be bullet proof, unless there's another operating system starting with W
:
x=getenv('OS');x(1)==87
getenv 'name'
searches the underlying operating system environment list for text of the formname=value
, wherename
is the input character vector. If found, MATLAB® returns the character vector value. If the specified name cannot be found, an empty matrix is returned.
Vim, 2 bytes
<C-a>1
On Windows, <C-a>
(ctrl+a) is mapped by default to Select All
. If you type a 1
in select mode in Windows, it replaces the selection with what you typed (1) leaving a 1 in the buffer.
On other operating systems, <C-a>
by default is mapped to Increment number
. Because there's no number to increment, it's a no-op, and then the 1 increases the count but in terms of the buffer is a no-op.
1 is truthy in Vim, and an empty string is falsy
Python 2.7.10, 24 bytes
import os
0/('['>os.sep)
Thanks to FlipTack for 3 bytes
This program takes advantage of the fact that Windows is the only OS to use \
as a path separator. Normally this is frustrating and bad, but for once it is actually an advantage. On Windows, '['>os.sep
is false, and thus 0/0
is computed, causing a ZeroDivisionError
and exiting with a non-zero exit code. On non-Windows platforms, '['>os.sep
is true, making the expression 0/1
, which does nothing, and the program exits with exit code 0.