コンピューターを終了させて​​下さい!


83

チャレンジ:

選択したプログラミング言語で、コードが実行されたマシンをシャットダウンします。

ルール

  • リソースの枯渇によるシャットダウンなし(例:強制停止のためのフォークボム)
  • 必要に応じて、特定の環境/ OSでのみ機能するコードを作成できます。
  • 標準的な抜け穴は禁止されています

これはであるため、バイト数が最も少なくなります!


62
学校でこれをやっていて、彼らが「ハッキング」していると思う友達ができました:D
RaisingAgent

12
このような`whatever`;Bash / Perl / PHP / Ruby / etc を停止するためのルールを一度作成する必要があります。馬鹿。
マナトワーク

260
Windows、0バイト。数日間コンピューターの電源を入れたままにして、自動更新に作業をさせます
ルイスメンドー

28
TIOリンクの欠如に気付いている人はいますか?
ステンベルグ

8
@MontyHarderそのページを読んだ後、私は用語をshatdown: past tense of the verb shutdown
造る

回答:


92

アセンブリ(x86 / x64、Linuxなど)22 21 19バイト

mov  $0x58,       %al  # 2 bytes: b0 58
mov  $0xfee1dead, %ebx # 5 bytes: bb ad de e1 fe
mov  $0x28121969, %ecx # 5 bytes: b9 69 19 12 28
mov  $0x4321fedc, %edx # 5 bytes: ba dc fe 21 43
int  $0x80             # 2 bytes: cd 80

ルートとして実行する必要があります。

これは電源ボタンを押すのと同じで、PCの電源を安全に切ることはできません。sync少なくともファイル破損のリスクを最小限に抑えるために、このプログラムを実行する前に、開いているすべてのアプリケーションを閉じて実行し、すべてのファイルシステムバッファをフラッシュしてください。

テスト走行

$ as -o poweroff.o poweroff.s
$ ld -o poweroff   poweroff.o
ld: warning: cannot find entry symbol _start; defaulting to 0000000000400078
$ sudo sh -c 'sync && ./poweroff'
root's password:

暗闇が続きます。

使い方

int $0x80ソフトウェア割り込みを呼び出します。x86とx64の両方で動作しますが、10年以上にわたって非推奨になっており、本番コードでは使用しないでください。syscall代わりにx64コードを使用する必要があります。x86はを使用する必要がありますがsysenter、コードゴルフには面倒です。

syscallの結果のアクションは、レジスタEAX-EDX、ESI、およびEDIに依存します。Linuxでは、システムコールリファレンスを介して利用可能なすべてのシステムコールを示していますint $0x80

EAXが0x58(88)を保持すると、再起動が呼び出されます。これは、コンピューターの電源オフ、スリープ状態、休止状態、およびカーネルの切り替えとCtrl-Alt-Del キーコンボの無効化または有効化にも使用できます。

プログラムの開始時に- asまたはgcc -nostdlibでコンパイルすることにより、実際にプログラムの開始時にいることを確認できます-ほとんどのレジスタは0に設定されます。これにはEAXが含まれるため、EAX mov $0x58, %alの下位8ビットを0x58に設定して、EAX自体を0x58に設定できます。これにより、32ビットでxor %eax, %eax0x58 mov $0x58, %eaxをエンコードするstraightforwardでレジスタを手動でゼロ化するよりも2バイト節約できます。

再起動の最初の2つの引数は、おそらく偶発的な再起動を防ぐためのマジック番号であり、レジスタEBXおよびECXから読み取られます。これらの数値が特定の定数に等しくない限り、再起動はアクションの実行を拒否します。

  • 最初のマジック番号は0xfee1deadfeel dead)と等しくなければなりません。これは、おそらくPCの電源オフ/死を指します。

  • 2番目の魔法の数は4つの異なる定数に等しくなりますが、後者の3つは古代バージョンのLinuxでは機能しませんでした。それらはすべて、PCのその後の電源オン/誕生を参照しているようです。

    • 0x28121969は、Linus Torvaldsの誕生日(1969年12月28日)を表します。

    • 0x05121996は、パトリシアトーバルズの誕生日(1996年12月5日)を表します。

    • 0x16041998は、ダニエラトーバルズの誕生日(1998年4月16日)を表します。

    • 0x20112000は、セレステトーバルズの誕生日(2000年11月20日)を表します。

    パトリシア、ダニエラ、セレステ・トーバルズは、リーナス・トーバルズの3人の娘です。

  • EDXレジスタは、必要な「リブート」のタイプを選択します。0x4321fedcRB_POWER_OFFで、PCをシャットダウンして電源を切ります。

  • 最後に、ESIレジスタの値はRB_POWER_OFFに対して無視されます。EDIレジスタの値は再起動によって完全に無視されます。

代替バージョン、x64のみ、19バイト

x64では、同じバイトカウントに対して適切なsyscallを使用できます。

mov     $0xa9,       %al  # 2 bytes: b0 a9
mov     $0xfee1dead, %edi # 5 bytes: bf ad de e1 fe
mov     $0x28121969, %esi # 5 bytes: be 69 19 12 28
mov     $0x4321fedc, %edx # 5 bytes: ba dc fe 21 43
syscall                   # 2 bytes: 0f 05

唯一の違いは、命令(syscallvs int $0x80)、__NR_REBOOTの値(0xa9 vs 0x58)、および関連するレジスタにあります。


通常、exeヘッダーに必要なフレーミングバイトなしで、アセンブリをコンパイル済みバイトとしてカウントしますか?
ジョシュア

はい、各命令はバイナリファイルの特定のバイトに対応しているためです。ELFファイル(またはOSが使用する形式)は別の言語と見なされ、適切なスコアを得るには手動で作成する必要があります。
デニス

コードのアセンブリ後に16進ダンプを追加できますか?
ckjbgames


私はfee1そうdead今。
arminb

49

PowerShell、13バイト

Stop-Computer

かなり自明ですか?PowerShellコアでは動作しないため、Linux / MacOS用のPowerShellでは動作しません(すでにTIOで試しました:-D)。

ボーナスごみ提出、12バイト

gcm s*r|iex

私のテストでは、これはPowerShell 2.0を搭載したWindows 2003で動作します。ほとんどの新しいバージョンでは動作せず、インストールされているモジュールによっては動作しない場合があります。それはかなりひどいです!

これは、パターンs*rを持つコマンドのリストを検索し、それらすべてを実行します!明確にするために、これは危険です、これをしないでください!

もちろん、トリックは必須パラメーターを持たないコマンドのリストを取得することです。そうしないと、PowerShellが値の入力を求めます。

私の2003マシンでは、返される3つのコマンドは次のとおりです。

CommandType     Name                                                Definition                                         
-----------     ----                                                ----------                                         
Application     scrnsave.scr                                        C:\WINDOWS\system32\scrnsave.scr                   
Application     ssmarque.scr                                        C:\WINDOWS\system32\ssmarque.scr                   
Cmdlet          Stop-Computer                                       Stop-Computer [[-ComputerName] <String[]>] [[-Cr...

はい、マーキースクリーンセーバーを起動しますが、いいえ、起動前に完了するまで待機しませんStop-Computer

このアプローチは、インストールされているモジュールにもよりますが、新しいマシンでも機能しますが、Windows 2012および2016でできることは14バイトでした:

gcm sto*er|iex

(そして、確かに、winbatchの送信はPowerShellで機能し、より短いですが、..それは楽しいことではありません)


4
Win7とWin10の短い方(およびそれ以上):gcm *p-c*|iex-そして、結果は1つだけです!
ボブ

@Bobはインストールされたモジュールに依然として大きく依存しています。私のWin10マシンでは、6つの結果が返されますが、そのうちのいくつかは必須パラメーターを持っています(したがって、プロンプトが出され、最後の結果であるに到達しませんStop-Computer)。
-briantist

39

バッチ、10バイト

Windowsでは、これで十分です

shutdown/s

これにより、1分でシャットダウンが設定されます。

または、@ flashbangが指摘するように:

shutdown/p

これにより、コンピューターがすぐにシャットダウンします。


79
Press the big button on the front of your computer= 0バイト
-RaisingAgent

96
@RaisingAgentここPPCGでは、コードの問題を解決します。肉体労働は眉をひそめています。
-steenbergh

12
@steenberghわからない... 1つの大きなボタンを押すと10キーストロークですか?ボタンを使用します
-WorldSEnder

16
@RaisingAgent提案にはスケーラビリティの問題があります。1週間に4回、1万台のコンピューターで試してみてください。
エミリオM Bumachar

10
@RaisingAgent本物の男性は、右のPSU上にあるスイッチを使用
たけ

35

x86マシンコード、Lenovo Z510、DOS COMまたはブートローダー、7バイト

BITS 16

mov ax, (1 << 13) | (7 << 10)
mov dx, 1804h
out dx, ax

に組み立て B8 00 3C BA 04 18 EF

私は「あなたが望むなら、特定の環境/ OSでのみ動作するコードを書くことを許可されています」を究極のレベルまで活用しています:これはLenovo Z510 1でのみ動作します。

これは、書き込みSLP_TYPa << 10 | SLP_ENPM1a_CNT、私はACPIテーブルからこの値をダンプし、ACPIレジスタシャットダウンについて答えヶ月前(私は上記のコードにコンテキストのビットを与えます)。

これは、DOSでCOM(バイナリデータをファイルに書き込み、拡張子を「com」に変更するだけ)またはブートローダーとして実行できます。
後者の場合、標準の署名を書き、最新のファームウェアの問題に注意してください


1厳密には真実ではありません。同じACPI構成を持つシステムもシャットダウンします。


13
プラットフォームが限られているため、賛成です。
パイプ

ハ!誰かがデニスを倒した!
ジョシュア

7バイトカウントを使用する場合は、アセンブリソリューションではなく、マシンコードサブミッションと呼ぶ必要があります。アセンブリ送信は63バイトです。
ヤコブ

@Jakobあなたは正しいです!
マーガレットブルーム

あなたはこの質問に答えるのにふさわしい人物のように見えます:stackoverflow.com/questions/2019463/…(私は惨めに失敗し、恥ずかしさから「答え」を削除しなければなりませんでした。)
ファルケン教授

34

GRUBシェル、4バイト

ゴルフ

halt

コマンド:halt --no-apm

このコマンドはコンピューターを停止します。--no-apmオプションが指定されている場合、APM BIOS呼び出しは実行されません。それ以外の場合、コンピューターはAPMを使用してシャットダウンされます。

ボーナス

ここではGRUBシェルが実際トゥールであることの証拠であるN ING-完全には(コメントを参照してください):

enter image description here


grubシェルは「プログラミング言語」ではありません-チューリング完全ではありません
-Alnitak

9
@Alnitak、あなたがそう思う理由は何ですか?それはかなり高度な特徴built-in scripting language, which has a syntax quite similar to that of GNU Bash and other Bourne shell derivativesや変数、条件構造、機能およびサポートの詳細は、そう明らかにされた旋削完全な、任意の措置によって。
ツェッペリン

1
OK、私はそれを取り戻します-私が見たときにそのようなものを見つけられませんでした
-Alnitak

28
スピナーを表示できない場合、明らかにTurではありませんのn ING-完全
J_F_B_M

1
Bashでも同じコマンドです。
パウェウトカルツ

31

65C02マシンコード、1バイト

STP命令(0xDB):

STPは65C02のクロック入力を停止し、ハードウェアリセットが発生する(RESピンがLowになる)まで65C02を効果的にシャットダウンします。これにより、65C02が低電力状態になります。これは、低消費電力を必要とするアプリケーション(回路)に役立ちますが、それ以外ではSTPはほとんど見られません。

(出典:http : //www.6502.org/tutorials/65c02opcodes.html

xxdダンプ:

00000000: db                                       .

いいね 私は当時Apple IIハッカーでしたが、このオペコードさえ覚えていませんでした。
キンダル

1
ええ、より多くの機能を備えた65c816エミュレータを書いてこの課題を見た後、私は何をすべきかを知っていました:P \ o /
therealfarfetched

24

Matlab、21バイト

system('shutdown -s')

私はこれを試したことはありません(1日の途中ですべてのプログラムを閉じて再起動を行うのは本当に魅力的ではありません)が、うまくいくはずです。。これは動作します...

後で簡単な説明を追加しますが、ラップトップは現在オフになっています。


105
「後で簡単な説明を追加します。ラップトップは現在オフです。」<-シャットダウンチャレンジの危険性
-Suever

4
Axaxaxaxa、まあ、時々コンピューターを再起動するのは悪くありません:)
RaisingAgent

6
uptimeしかし、あなたを台無しにします
ウェインワーナー

shutdown -sシェルとして送信するのではなく、MATLABとして送信するのはなぜですか?
user253751

10
私にとって、貝は私がビーチで見つけたものかガソリンスタンドのどちらかだからです。
スティーヴィーグリフィン

21

MATLAB、11バイト

!shutdown/p

Stewie Griffinのアプローチにやや似ています。しかし、MATLABは持っているシステムコマンドを呼び出すの短い方法を。この場合、!使用されます。Windowsは.exeコマンド名を必要としないため、これも省略されています。この/オプションは引き続きサポートされており(Windows 10を実行しています)、スペースの必要性がなくなります。代替手段は次のとおりです。

system shutdown/p % 17 bytes; uses so-called 'command' syntax.
dos shutdown/p    % 14 bytes; the 'dos' command can be used just as well.

19

SmileBASIC、14 11 6バイト

OPTION

3DSを再起動させるクラッシュをトリガーします。これが重要であることを願っています。

最新バージョンで動作します。


これはパッチが適用されたと思っていました...バージョン番号を含めてください。
-wizzwizz4

3
バージョン3.5でパッチが適用されていますが、日本以外ではまだリリースされていません。
12Me21

4
@ 12Me21確かにカウントされます。環境のいい選択。
P. Ktinos

REBOOTSBv2からのみ有効な回答としてカウントされた場合。
snail_

16

Bash、7 6バイト

init 0

プログラムがルートとして実行されると仮定します。


実際、マシンの電源を切る必要があります。したがって、有効な答えとして「halt -p」が必要です
P. Ktinos

4
この編集虐殺:)
RaisingAgent

@ P.Ktinos:poweroffわずかに多くの文字がありますが、単一の単語です。
ccpizza

1
@ccpizza正しいですが、典​​型的なスコアリング基準はバイト数です
-Suever

13

Java、101 98 62 42バイト

()->{Runtime.getRuntime().exec("init 0");}

@Snowmanが指摘したように、質問は完全なプログラムが必要かどうかを指定しなかったので、これはまだ受け入れられるはずです。


2
main から省略することができるためclass、置き換えるのは短くinterfaceなりますpublic
パベル

6
質問では提出が完全なプログラムでなければならないと指定されていないため、メソッドを使用できますvoid f()throws Exception{Runtime.getRuntime().exec("shutdown/s");}

1
思いませんLinuxバージョンは、少し短くなりますか?
jpmc26

2
()->{Runtime.getRuntime().exec("init 0");}または暫定的に()->Runtime.getRuntime().exec("init 0")(現時点では確認できません)。これは、カスタムvoid、引数なしのスローインターフェイスを実装するラムダです。
オリビエグレゴワール

1
これは、「Java on LInux」などのLinux固有の回答としてラベル付けする必要があります。
ヤコブ

13

Python 2、29バイト

import os;os.system('init 0')

Linuxシステムで動作し、root権限が必要です。

Windowsの場合、33バイト

import os;os.system('shutdown/p')

これは、私がこれまでに書いた中で最も面白くない、または役立つコードかもしれません。


2
他の誰かがLinuxシェルバージョンを投稿しました。
jpmc26

1
ああ、私の悪い
..-FlipTack

12

コモドール64、11バイト

0 sys64738

これは、BASICプロンプトからのものです。または...

Commodore 64、6502アセンブリ、3バイト(アセンブリ済み)、16バイト(ソース)

*=8000
JMP $FCE2

Commodore 64のBASICからの直接入力モードsys64738を使用すると、保存するプログラムやその他のものがないため、ゼロバイトが使用されると思います。スクリーンRAMを使用していますが、そのRAMはすでにスペースで満たされているので、それらのスペースをテキストに置き換えるだけです。
ショーンビバーズ

2
ソースコードはスペースを占有します。ターゲットマシンにスペース確保しないからといって、 0バイトを占有するわけではありません。そうでなければ、答えは ``になります。
wizzwizz4

3
0との間にスペースは必要ありません。をショートカットフォームでsys64738置き換えることができ、プログラムの長さの末尾の改行をカウントしません。ただし、コードが要件を満たしているとは思いません。64738のコードは、電源オフではなく、ソフトリセットを実行します。syssY
マーク

2
電源をオフにしません。
-TecBrat

1
Commodore 64にビールをこぼしたことがありました。これはカウントされますか?
ショーンビバーズ

12

TI-Nspire CX CAS、3バイト

" "+" "

2つの空の文字列を合計します。

古いバージョンの電卓では、これによりデバイスがクラッシュし、再起動します(物理的なボタンの組み合わせ以外に再起動せずにデバイスをシャットダウンする方法はありません)。

Adriwebによるビデオ


それは7バイトではありませんか?
ローマングラフ


私を納得させます。
ローマングラフ

11

C ++、51 40バイト

Ingveのおかげで-11バイト!

#include<os>
int main(){OS::shutdown();}

IncludeOS(v0.10.0-rc.1)でのみ動作します

テスト:

$ pwd
/home/simon/IncludeOS/examples/demo_service

$ cat service.cpp
#include<os>
int main(){OS::shutdown();}

$ mkdir build && cd build && cmake .. && make && cd ..
[...]

$ boot build/IncludeOS_example
[...]
================================================================================
================================================================================
 IncludeOS v0.10.0-rc.1-9-g151a2b9
 +--> Running [ IncludeOS minimal example ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

$

1
今私はIncludeOSについて興味があります
カールNapf

@KarlNapf AlfredはCppCon 2016でIncludeOSについて素晴らしいプレゼンテーションを行いました:もっと知りたいならyoutube.com/watch?v=t4etEwG2_LY :
サイモン

1
あなたは使用する必要はありませんvoid Service::startint main IncludeOSに働くだけでなく。
Ingve

10

AppleScript、30バイト

tell app "Finder" to shut down

正確に言うと、Finderにコンピューターの電源を切るよう指示します。


9

AutoHotkey、11 10バイト

Gurupad Mamadapurのおかげで1バイト節約

Shutdown,9

AHKはデフォルトでシャットダウンコマンドをサポートしています。9なるフラグでありますShutdown=1+ PowerDown=8


1
AHK神秘的です。
グルパッドママダプール

コンマの後にスペースが必要ですか?
-therealfarfetched

後のスペース,は必要ありません。別のフラグでテストしてみてください。これはすぐにコンピューターをシャットダウンしないと思い、起動時にロードするメインスクリプトにそれを配置しました:Dここでセーフモードでロードして問題を解決します。はぁ。
グルパッドママダプール

9

マシンコード(x86、ブートローダー)18バイト

b8 01 53 33 db cd 15 b8 07 53 bb 01 00 b9 03 00 cd 15

分解:

mov ax, 0x5301 ; connect to real-mode APM services
xor bx, bx     ; device id 0 - APM BIOS
int 0x15       ; call APM
mov ax, 0x5307 ; set power state
mov bx, 0x0001 ; on all devices
mov cx, 0x0003 ; to Off
int 0x15       ; call APM

次のコマンドを使用して、Bochsのデバッガーでテストできます(シミュレーションを開始した後、ディスクドライブをセットアップしてください)。

pb 0x7c00
c
setpmem 0x7c00 4 0x335301b8
setpmem 0x7c04 4 0xb815cddb
setpmem 0x7c08 4 0x01bb5307
setpmem 0x7c0c 4 0x0003b900
setpmem 0x7c10 2 0x15cd
c

この同じマシンコードは、DOS実行可能ファイル(*.COM)としても機能します。


7

C#、79 54 53バイト

これはWindowsで機能します。

79バイト

class _{static void Main(){System.Diagnostics.Process.Start("shutdown","/s");}}

53バイト、TheLethalCoderのおかげ:

_=>System.Diagnostics.Process.Start("shutdown","/s");

2
課題は、完全なプログラムを必要とせず、(もちろん未使用)入力を服用禁止していませんので、あなたはにコンパイルできAction<int>てみませんか_=>System.Diagnostics.Process.Start("shutdown", "/s");54バイトのために。
TheLethalCoder

@TheLethalCoder、更新、ありがとう!
ダリウスウォニアック

不要なスペースを削除することもできます。
-nothrow

もちろんはい!ありがとう、@ nothrow :)
ダリウス

6

AutoIt、11バイト

Shutdown(1)

シャットダウン関数は、次のコードの組み合わせを取得します

0 = Logoff
1 = Shutdown
2 = Reboot
4 = Force
8 = Power down
16= Force if hung
32= Standby
64= Hibernate

たとえば、シャットダウンして電源を切る場合、コードは9(シャットダウン+電源切断= 1 + 8 = 9)になります。


1
0(ログオフ)はここでは特別なケースです。暗黙的にスタンバイまたは休止状態と結合することはありません。
-wizzwizz4

OK0 + 32 = 32
rahnema1

うーん、スタンバイ/ハイバネーションに進む前に常にログオフするのですか?
ルスラン

@Ruslan私はそれがどのように機能するか正確に知りません、あなたはより多くのフィードバックを受け取るためにAutoItユーザーフォーラムを参照することができます:
rahnema1

6

Windows-NativeAPI、212バイト

[OK]これは実際には最短バージョンではありません。しかし、一部には興味深いかもしれません。これは、Win32サブシステムで実行されません。ただし、ネイティブAPIのコンテキスト内で実行すると実行されます(autochk.exeのように)

コード

#define WIN32_NO_STATUS
#include <windef.h>
#include <winnt.h>
#include <ntndk.h>
NTSTATUS main() {
RtlAdjustPrivilege(SE_SHUTDOWN_PRIVILEGE,TRUE,FALSE,NULL);
return ZwShutdownSystem(ShutdownPowerOff);
}

構築する

これをビルドするには、WinDDK build.exeツールを使用します(適切なsourceファイルをNMAKE)。

または、次のコマンドを使用してコンパイルおよびリンクします。

cl /Gd /D_X86_ /showIncludes /I%DDK_INC_PATH% /I%CRT_INC_PATH% /c main.c
link /verbose /nodefaultlib /subsystem:native /machine:X86 /entry:NtProcessStartup@4 C:\WinDDK\7600.16385.1\lib\win7\i386\nt.lib C:\WinDDK\7600.16385.1\lib\win7\i386\ntdllp.lib C:\WinDDK\7600.16385.1\lib\win7\i386\BufferOverflow.lib .\main.obj 

注:これにより、x86ネイティブ実行可能ファイルがビルドされます。別のアーキテクチャ用にこれを構築する場合は、適切なビットを変更します。

テスト

ネイティブ実行可能ファイルをテストするは、win32サブシステムがロードされるに実行する必要があります。一般的な方法の1つは、次のレジストリキーに実行可能ファイルを追加することです。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute

警告

ただし、これを行う場合は、別のOSからターゲットOSのレジストリハイブを編集するオプションが必要です。これで、ターゲットOSを起動できなくなります!

以前のスナップショットに簡単に戻すことができるVMでそれを行いました!



5

ほとんどのLinuxシェル、15バイト

# echo o>/p*/*ger

/procディレクトリにいる場合は、11バイトの長さにすることができます。

# echo o>*ger

これは非常に簡単で(ファイルシステムのアンマウントやプロセスの強制終了などの副作用はありません)、むしろ残忍です。


1
前回、リダイレクトでワイルドカード拡張を試みたときに、一致するファイルが存在するにもかかわらず、ワイルドカードを含むファイルが生成されました。
ジョシュア

5
私はあなたのバイト数に「/に/ proc」を追加する必要が信じている
ツェッペリン

@Joshuaシェルに依存する場合があります。私は実際bashにコンピューターで(で)テストしました:
ラドバンガラビック

1
@RadovanGarabík-それは本当に有効だとは思わない。これは基本的に、エイリアス「p = poweroff」(「不可能」でもない)があることを意味し、「p」が有効な1バイトのソリューションであると主張することと同じです。
ツェッペリン

1
しかし、あなたは、おそらくこのように、わずか3バイトを犠牲にして、それが有効にすることができますecho o>/p*/*ger
ツェッペリン


5

AppleScript、44バイト

tell application "Finder"
shut down
end tell

AppleScriptの構文がどのように機能するかなどはわかりませんので、これを短縮する方法を知っている人がいたら教えてください。

また、私はこれを学校の電話で行っています(「ハッキング」)ので、テストできません。

14バイト少ない(kindallのおかげで)と言うことができます

tell app "Finder" to shut down

誰かが、数時間後にあなた(同じプログラムで)短い解決策を考え出した(が、それを投稿の代わりに、ここでコメント)codegolf.stackexchange.com/a/107958/62824
devRicher

おそらくインデントを削除できます
チョイス

4
tell app "Finder" to shut down動作するはずです(コンパイルによって「アプリ」が「アプリケーション」に置き換えられる可能性があります)。
キンダル

4

J、14バイト

2!:0'poweroff'

Linuxシステムで動作します。2!:0の文字列を実行します/bin/sh


4

Clojure、40 39バイト

(.exec(Runtime/getRuntime)"shutdown/s")

フラグをから-sに変更して-1バイト/sと、スペースを取り除くことができました。

基本的にはJavaの答えです。

これをテストするのは楽しかったです。Windowsは、2番目にシャットダウンしたSurfaceでファームウェアの更新を行うことにしました。もちろん。

(defn shutdown []
  (.exec (Runtime/getRuntime) "shutdown -s"))

2

Node.js、39バイト

Linux

require('child_process').exec('init 0')


2

C ++、 48 47(Windows) 46 45(Linux)バイト

Snowmanのおかげで1バイト削除

#include<cstdlib>
main(){system("shutdown/p");}

これにより、Windowsのシステムがシャットダウンするはずです。

#include<cstdlib>
main(){system("poweroff");}

これにより、Linuxのシステムがシャットダウンします。


あなたは必要;ですか?
RaisingAgent

1
@LliwTelracs「-p」ではなく「shutdown / p」であり、スペースは必要ありません。
P. Ktinos

セミコロンは適切なC ++構文に必要です。スラッシュを使用すると、ウィンドウの回答が短くなりますが、Linuxでは機能しなくなります。WindowsとLinuxの間で共有されるシャットダウンの間違った文字を追加しましたが
-fəˈnɛtɪk

@LliwTelracsあなたは何でもできますが、2番目のルールを乱用し、Linuxの機能を気にしないことをお勧めします。これはコードゴルフであり、バイト数が少ない方が良いためです。
P. Ktinos

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