再起動後も文字列を保持するための言語の最短コード


48

あなたのプログラム:

2つのプログラム(両方とも同じ言語)を作成します。ストレージプログラムはSTDINから文字列を取得し、永続的な場所に保存し(以下を参照)、エラーなしで終了します。検索プログラムは入力を受け取らず、保管されたストリングを検索して、それをSTDOUTに出力します。

永続性の客観的テスト:

ローカルマシンでストレージプログラムを実行し、ローカルマシンの電源を入れ直し、ローカルマシンで検索プログラムを呼び出すことができるはずです。この再起動テストに合格する限り、(Web上でも)必要に応じて文字列を隠しておくことができます。

テストケース:

ストレージと検索:

echo foo | Store
Retrieve
foo

繰り返しストアは上書きする必要があります(set()メソッドのように):

echo foo | Store
echo bar | Store
Retrieve
bar

繰り返し取得は非破壊的です(get()メソッドのように):

echo foo | Store
Retrieve
foo
Retrieve
foo

ストレージを呼び出す前の取得:

これについて心配する必要はありません。検索プログラムは、ストレージプログラムが過去のある時点で実行されたと想定できます。

入力/出力の柔軟性。

人々は、これを厳密なSTDIN / STDOUTから標準のIOルールに拡張するように頼まれました。抜け穴が多すぎるため、できません。一部の標準IOオプションでは、入力が永続的な方法ですでに保存されています。たとえば、「プログラムはファイルから入力を取得できます」。厳密なSTDINとSTDOUTよりも柔軟になりたいが、水門を開かない。

標準のIOルールスレッドから、課題を解決しないものを選択しています。

代替を使用する場合、ユーザー対話型である必要があります。ユーザーは、入力をプログラムにパイプする、プログラムが提供するプロンプトに入力する、またはプログラムのコマンドライン引数として入力を入力する以外に、他の作業を行う必要はありません。ユーザーは、検索プログラムを実行して画面に出力を表示したり、STDOUTまたはSTDERRに送信したりする以外に何もする必要はありません。

許可される仮定:

  • 2つのプログラムは同じディレクトリで実行されます
  • プログラムには、そのディレクトリに対する読み取り/書き込み権限があります
  • 作成したファイルは再起動後も存続します(一時ディレクトリにはありません)
  • 文字列の一部ではなかった1つの末尾の改行が許可されます。他の末尾の空白はありません

これはコードゴルフであり、スコアは両方のプログラムのバイトの合計です。


9
ちょうどecho $@>xそしてcat x有効ですか?
アダム

1
仕様では、複数回保存する機能については言及していませんが、そうする例はあります。の呼び出しごとにクリーンな環境を想定できますStoreか?
アダム

4
@EriktheOutgolferなぜそれは有効ではないのでしょうか?メタで議論された抜け穴があっても、チャレンジが具体的にそれを許可することを妨げません。
ディルナン

6
Webの制限は、通常、Webからのものを抜け穴として引き出し、そのようなものを作成する作業から抜け出すことです。この場合、それがWeb上にあるのは、それをそこに置く作業を行ったためです。
ジャレッドK

3
誰かが磁気コアメモリを搭載したコンピューターの答えを書く必要があります。
マーク

回答:


88

zsh、4バイト

ストア:>f(STDINから読み取り、というファイルに書き込みますf
取得:<ffSTDOUTに内容を書き込みます)


8
勝者はいると思います。
アダム

@Adámファイルへの入力を1バイトで書き込むトークンがない限り:P
FreezePhoenix

1
@FreezePhoenix許可されていない新しい言語を作成しない限り、おそらく何もありません...-
Chromium

4
@Chromium check Z80の回答:一部の既存の言語は、0バイトのプログラムから書き込むことができます。
クール

55

TI-BASIC(Z80)、1 バイト

ストア:( 文字列を入力するだけ)
取得:(Ansバイト27)

しかし、それが有効でない場合:

TI-BASIC(Z80)、7 6 バイト

-1ヤコブに感謝します。

ストア:(Prompt Str0バイトDD AA 09)
取得:(disp Str0バイトED AA 09)


1
5バイトだと確信していますか?
FreezePhoenix

6
@FreezePhoenix TI-Basicはトークンを使用します。
アダム

3
うーん...入力を受け取りAns、同じ変数に保持しないのはなぜですか?空のストアプログラムでAns、取得のみのために動作するはずです:1バイト!
ヤコブ

9
@アーサー・イェップ、Ans持続します。実際、すべてのユーザー変数、方程式、および履歴を含む(と思う)多くの状態が持続します。ユーザーの観点から見ると、電源オフは基本的にPCのスリープ状態に相当するTI計算機であるため、それほど混乱することはありません。
ヤコブ

2
@JaredK 1バイトのソリューションはルールの悪用の匂いがすることには間違いなく同意します(私が提案したのは私でしたが)。ただし、ストアプログラムは終了すると言います。他のプログラムその後実行することできるからです(ただし、ソリューションの操作に干渉します)。あなたの「永続性の客観的テスト」の私の解釈は、プログラムは電源の入れ直しの前後に直接実行されるというものでした。それが正しくない場合は、おそらく1バイトのソリューションを競合しないとマークする必要がありますか?
ヤコブ

23

ブラウザJS、44バイト

店舗

localStorage.a=prompt()

取得

alert(localStorage.a)

ウィルprompt()STDINから読みますか?
パイプ

9
グラフィカルWebブラウザーにはSTDINがありますか?いいえprompt()。テキストの入力を求めるアラートがポップアップ表示され、結果が返されます。
開発

5
@Devもちろん、他のすべてのプロセスと同様に、グラフィカルWebブラウザーにはSTDINがあります。特定の言語で使用できない場合は別の質問であり、答えが「いいえ」であれば、このチャレンジで使用できる可能性があります。
パイプ

5
@DevデフォルトのI / Oメソッドには、GUIプロンプトによる入力GUIディスプレイによる出力が含まれます。OPが標準をオーバーライドすることを意図していない限り、これは有効なはずです。明確にします。
エソランジングフルーツ

2
より多くのIOを許可するようにチャレンジを編集しましたが、デフォルトのIOメソッドの限られたサブセットにのみ拡張しています。ただし、この答えは私のサブセット内にあります。私はそれが好きです。
ジャレッドK


12

Python 3、46バイト

ストア、45バイト:

open(*'fw').write('print(%r)'%open(0).read())

検索プログラムは、という名前のファイルであるstoreコマンドによって構築されますf。(ファイル名に1バイト


2
きっと使えますinput()か?
アルテミスファウル

@ArtemisFowl input()は、最初の改行までしか受信しません。STDINのすべてopen(0).read読む
ジョーキング

あなたはおそらく物事がまだ曖昧だったときに投稿しましたが、現状ではこの答えは現在の仕様を満たしていません。私はもともと、STDIN / STDOUT要件を厳格にすることを意図していましたが、デフォルトは許可されていません。拡張しましたが、デフォルトのサブセットのみです。検索プログラムは、STDOUTを使用しない場合、画面に出力を表示する必要があります。すべてのデフォルトを許可した場合、すべての言語の解決策は、「入力をファイルに取り込む」、「ファイルに出力を与える」、ゼロバイトになります。
ジャレッドK

@JaredKこれがどのように機能するかはよくわからないと思います。store-programは、STDINからの入力を読み取り、この入力を印刷するPythonプログラムを格納しますf。例:STOREは、入力で呼び出されますabc。その後、書き込みprint('abc')f。ここでf(検索)を呼び出すと、abcSTDOUT に出力されます。
ovs

@JaredK STOREがRETRIEVEを変更できるかどうかをコメントで尋ねました。
ovs


8

Powershell-4バイト

ストレージ:

ac

(代替案もsc

検索

gc

編集:出力がユーザー入力を許可されていないことに気付きました...したがって、4バイトから6または8バイトにジャンプします

ストレージ:

ac f

(代替sc f)8バイトバージョンの場合

ac

(およびfパスとして指定)6バイトバージョン

検索

gc f

8

錆び、136バイト

ストア(84バイト)

use std::{fs::*,io::*};

||{let mut v=vec![];stdin().read_to_end(&mut v);write("a",v)}

取得(52バイト)

||print!("{}",std::fs::read_to_string("a").unwrap())

謝辞


1
インポートをに変更してからの代わりにuse std::{io::*,fs::*}使用することで、バイトを保存できます。writestd::fs::write
エソランジングフルーツ

どうwrite("a",String::from_iter(stdin().chars()))
ベルギ

@Bergiナイス。しかし、安定したRustでcharsトリガーerror[E0658]: use of unstable library feature 'io'します。
ヤコブ

うーん、それchars()は賛成で廃止されたようですString::from_utf8(stdin().bytes())。(また、私は毎晩ドキュメントを使用しましたが、それが犯人かどうかはわかりません)
ベルギ

@Bergi私はいくつかのバリエーションを試してみましたbytes()chars()が、イテレータアイテムがに包まれているので、それらのどれも非常に短いませんでしたio::Result
エソランジングフルーツ

8

バッシュ、 12 11 10バイト

格納、 7 6 5バイト

cat ->f#必要なし-、stdinがデフォルト

cat >f#スペースも不要、>分離も

cat>f

取得、5バイト

cat f

1
-ストアプログラムには必要ありません。
コンラッドルドルフ

2
「猫」と「>」の間にスペースも必要ありません!
psmears

書き込みと使用については、zsh投稿と同じことができるはず>fです。<fしかし、読み物として有効かどうかはわかりません。
アロ

@allo Cygwinの上に、少なくとも、>fなどの作品echo '' > f(それが存在する場合はそれがない場合は作成し、ファイルを空にするには)、しばらくは<f何も組合もないように思われます。
スンダ

7

HP 49G RPL、48バイト

保存するには::2: A DUP PURGE STO、26.5バイト

復元するには::2: A RCL、21.5バイト

バックアップバッテリーに入れておくと、次のようになります。

HP 49G RPL、0バイト

保存するには:、0バイト

復元するには:HP 49Gは再起動後もスタックに手を加えないため、0バイトです。


ゼロバイトのソリューションは、さまざまな計算機で機能するはずです。家に帰ったら42代をバストします。
SIGSTACKFAULT

あなたのゼロバイトソリューションと、非破壊的に再起動する電卓で実行されている他のソリューションは、「2つのプログラムを作成します」という質問の2つの部分を満たしていないと思います。あなたが持っているのは、再起動後も生き残る単一のプログラムです。「ストアはSTDINから読み取り、エラーなしで終了します。」プログラムは、ユーザーがキーを押すのを待っています。プログラムのスタックと実行状態はまだ変更可能です。これは、まだ実行中であり、終了していないことを意味すると思います。
ジャレッドK

@JaredKこの質問は、2つのプログラムが同一ではないことを規定していません。終了部分に関しては、伝統的にRPLではプログラムへの入力がスタック上で与えられます。それ標準入力です。
ジェイソン

1
スタックは電源の入れ直しに耐えられますか?たぶん、電卓のボタンを介したソフト電源オフですが、バッテリーを取り外さないと思います。そのため、パワーサイクルが何であるかによります。
ユーザー

1
@ユーザーいいえ、フラッシュメモリであるポート2(ソフトリセットとハードリセットに耐えます)。TI-BASICの回答ではその定義を使用しているように見えたので、完全を期すためにスタックの回答を含めました。
ジェイソン

6

APL(APLX)、5 バイト

ストア:⍞⍈1
取得:⍇1

 stdin
⍈1 writeからファイル番号1の次の使用可能なコンポーネントまでの行を取得します

⍇1ファイル番号1  の最初の *最後のコンポーネントを読み取ります

APLXストアセッションAPLX取得セッション

*ドキュメントは最初に書かれていますが、実験は最後を示しています。


6

bash、10バイト(非競合)

touch $@
ls

Unixのファイル名を含めることができます以外の任意の文字をNULして/、その名前をすることができ、255バイトの長い件までこれだけは、その長さまでストリングス保存することができるようになりますので、および「含まない(記憶媒体の制限があると考えます)/ 'それら。これが競合しない理由の1つであり、別の理由は、これが実行されるディレクトリが空であることを前提としていることです(または、外部からの出力lsが許可されていることです)。情報を保存するためのクールで非自明な方法に思えたので、私はまだこれを投稿したかったのです。

同じ長さの同じものではなく、文字の制限は同じです:

35 33バイト

mkdir -p $@
find|sed '$!d;s/..//'

これにより、/文字列内の文字が許可され、さらに多くの文字がサポートされます(正確には、文字数は実装に依存します)。

(@Cows quackのおかげでこれで2バイト)


1
IIRC、バークレーのグループは、1990年代にデータベースシステムを作成し、テーブル列データをファイル名(最大255文字)で保存していたと思います。行とテーブルは親ディレクトリだったと思います。
デビッドRトリブル

35バイトの回答では、2番目のステートメントをに変更できますs/..//$これが唯一の最後の行に適用することができるように他のすべての行が削除されるため、必要とされていない、と^置換はのみ最初の一致に適用されているため、落下させることができます。
Kritixiリトス

@Cowsquack完了。変更がなぜ機能するのかを説明してくれてありがとう。
スンダ

あなたは使用する必要は"$@"、ない$@空白によって火傷を避けるために、*?、または~文字。
アンデルスカセオルグ

5

Python 3、56バイト

ストア(33バイト)

open(*'aw').write(open(0).read())

取得(23バイト)

print(open('a').read())

末尾に改行を付けて印刷します。


なぜinput()代わりに、open(0).read()から省略end=printないのですか?
MoxieBall

@MoxieBall input使用されなかった理由はわかりませんが、省略end=すると、文字列の最後に新しい行が追加されます(つまり、元の文字列ではありません)(多分)

@NickA質問に改行が印刷されるように見えるので、とにかくそれは重要ではないと思います
...-MoxieBall

私は夢中になりましたか、23 + 33 = 56(54ではない)ですか?また、なぜ使用しないのinput()ですか?
アルテミスファウル

1
@ArtemisFowl良いキャッチ。に関してはinput、永続化する文字列に改行が含まれている可能性があると想定しています。
ヤコブ

4

Japt、46 30バイト

Shaggyのおかげで-16バイト。

Japtを使用してみた最初の1つ。JS evalは時々気まぐれになることがあります。ブラウザのを使用しwindow.localStorageます。

ストア(16バイト)

Ox`lo¯lSÈSge.P=U

取得(14バイト)

Ox`lo¯lSÈSge.P

+1は、私が気に入っている標準のファイルIO以外のものを最初に使用したためです。
ジャレッドK

1
Japtへようこそ!:)
シャギー

1
ところで、を使用してsetItemgetItem完全にバイパスできますlocalStorage.key値を設定し、値取得する
シャギー

@Shaggyありがとう!また、奇妙な制御文字を避けます。
LegionMammal978

4

Haskell、46バイト

ストア(26バイト):

getContents>>=writeFile"t"

取得(20バイト):

readFile"t">>=putStr

3

ルビー(26バイト)

セット(16バイト)

IO.write'a',gets

取得(10バイト)

IO.read'a'

3

MATLAB(30バイト)

セット(22バイト)

a=input('','s');save a

に変更することで4バイトを削減できますinput('')が、これには入力を単一引用符で囲む必要があります。'input string'

取得(8バイト)

load a;a

3

C(GCC)、98バイト

ストア(46バイト)

入力は、最初のコマンドライン引数を介して行われます。

main(c,v)char**v;{fputs(v[1],fopen("a","w"));}

取得(52バイト)

c,d;r(){for(d=open("a",0);read(d,&c,1);)putchar(c);}

移植性がない

  • いくつかのポインタ型がに適合する必要がありますint

謝辞


1
これにはint、暗黙の宣言が機能int fopen()するために、ポインターを保持できるC実装が必要です。(例えば、ほとんどの32ビットシステム、または使用gcc -m32しますが、32ビットの実行可能ファイルを作るためのx86-64にしている場合。)そしてところで、私は、Linuxの使用してみましたsendfileし、copy_file_range(2)システムコールを、彼らはTTYから/に仕事をしません。
ピーター

1
プログラムではなく関数を記述しているので、おそらく、入力文字列をarg fputs(fopen())およびを許可する関数引数として使用することを正当化できますread(open(),buf,-1)。(質問では、コマンドライン引数を入力として使用できるようになりました。)
ピーター

Linuxの「スプライス」機能は、パイプからファイルに(およびその逆に)コピーします。stdin / outがパイプの場合、関数呼び出しは保存されますが、パラメーターが増えます。
CSM

2

APL(Dyalog Unicode)、18バイト

ストア:⍞⎕NPUT⎕A 1 オンラインでお試しください!
取得:⊃⎕NGET⎕A オンラインでお試しください!

 stdinから行を取得し 、大文字のアルファベット  と
⎕NPUT 呼ばれるネイティブファイルに入れて、ファイルが存在する場合は上書きします
⎕A1

 最初の部分(データ、次の部分をコードしているライン終了タイプ)
⎕NGET を取得ネイティブファイル
⎕A の大文字のアルファベット


2

R(27バイト)

ストア(21バイト)

x=readLines('stdin')

ロード(6バイト)

cat(x)

これを機能させるには、最初のスクリプトをコマンドラインオプション--saveで起動し、2番目のスクリプトを起動する必要があります--restore(ただし、インタラクティブモードではこれは不要です:これらのオプションはデフォルトです)。

これは、Rのバグがデフォルトの引数がreadLine非インタラクティブモードで動作することを妨げないという事実がない限り、7バイト短縮できます。対話モードでは、これは必要ではないため、ソリューションは20バイトのみを使用します


1
q直接使用する方がはるかに効率的だと思います。最初のプログラムを使用し、x=scan(); q("y")2番目のプログラムを使用するか、文字列の印刷方法をどの程度厳しくするxcat(x)によって異なります。通常のコードゴルフのルールであなたもそうのバイト追加し、コマンドライン引数をカウントしなければなりません--saveし、--restore(私の製剤は必要としないもの)
JDL

@JDL scanは任意のコンテンツに対しては機能せず、のscan(w='character')長さよりも長くなりreadLines()ます。q不要です(ただし、機能q('y')しませんyes。スペルを入力する必要があります)。x2番目のプログラムで使用することを考えましたが、理解している限り、これは要件に違反します。
コンラッドルドルフ

1
を使用できますがscan(w="")、タイプを入力する必要はありませんscan。指定された引数のタイプから推測できます。私にとって、q( "y")は保存を促す終了として機能しますが、それはおそらくRのバージョンと、おそらくRstudioを使用しているかどうかに依存します。
JDL

@JDL scan:ああ、きちんとした、ドキュメントはこれについて言及していません!残念ながらscanまだ解析が行われるため、これはすべての入力で機能しません。とにかく、scan('stdin',w='')たまたま正確に同じ長さreadLines('stdin')です。q:R 3.4.4には、「Error in q( "y"): 'save'の認識されない値」と記載されています。
コンラッドルドルフ

ああ、それはRstudioのものです。私はRstudioで、またターミナルで個別に試してみましたが、Rstudioでしか動作しませんでした。
JDL

2

Java(JDK 10)、204バイト

警告: Javaプログラムがユーザー名に対して保存した設定を上書きします!

ストア、94バイト:

interface S{static void main(String[]a){java.util.prefs.Preferences.userRoot().put("",a[0]);}}

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

110バイトを取得:

interface R{static void main(String[]a){System.out.print(java.util.prefs.Preferences.userRoot().get("",""));}}

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

java S foo
java R
foo

これは、入力を引数として取得し、java.util.prefsが提供するユーザー設定バッキングストアに保存することで機能します。ユーザーのルートノードを上書きして、ノードの命名時に1バイトを節約します。非破壊でテストする場合は、使い捨てのユーザー名から実行するか、キーを「」からノード名に変更します。


良いアイデア!Java 10を使用しているため、ラムダ式にすることでこれらを短縮できます。また、バイトカウントに含まれzていない場合は、プログラムとTIOから削除する必要があります。人々に警告する代わりに、提出物の上部に警告を置くことを検討してください。TIOには94バイトと110バイトのソリューションがあるはずです。
ヤコブ

ありがとう!提案された編集を行いました。確かではありませんが、ラムダ式がこの質問のカスタムIOルールを満たすことはできないと思います。
ジャレッドK

ああ あなたは正しい、私はそれを忘れていました。
ヤコブ

2

C#、157バイト

セット、74バイト:

class P{static void Main(string[]a){System.IO.File.WriteAllLines("a",a);}}

取得、83バイト:

class P{static void Main(){System.Console.Write(System.IO.File.ReadAllText("a"));}}

VisualMelonのおかげで-1バイト-LiefdeWenのおかげで
2バイト


後にそのスペースを削除し"a",、これが打たれることを疑います:)
VisualMelon

WriteAllLines2番目のa
パラメーター

2

Perl 5の、48の 26 23バイト

書き込み、20 + 1(-n)バイト

暴徒のおかげで-3バイト

open f,">>f";print f

私は実際、この点については確かではありませんが、基準を満たしています。過去のエントリについては、cliオプションのみがカウントされたため、これを使用しています。

読み取り、0 + 2バイト

perl -pe "" f

1
なぜあなた-neは1でスコアをつけたのでしょうか(それもあるはずですe)、しかし-pe2で得点しましたか?の代わりに-Eand sayを使用できますprint
シンバク

について教えてくれてありがとう-E、私はそれについてよく知らなかった。を使用しなかった理由については-ne、それは実際にファイルから実行しているためです。ですから、perl -n w.plもしこれがPCGコミュニティの標準に反する場合は、それに応じて回答を編集できます。
ジェフリーH.

大丈夫です。余分なコマンドライン引数にマルスを追加するので、問題ありません。
シンバク

2
">>","f"- > ">>f"3文字節約
暴徒

1

アタッシュ、23 + 16 = 39バイト

単にSTDINをファイルAに書き込み、次にファイルを読み取りますA

store.@

$A&FileWrite!AllInput[]

retrieve.@

Echo!FileRead!$A

テスト中

C:\Users\conorob\Programming\attache (master -> origin)
λ echo testing | attache store.@

C:\Users\conorob\Programming\attache (master -> origin)
λ attache retrieve.@
testing

1

Lua、57 53 51バイト

ストア、27バイト

io.open("x","w"):write(...)

取得、24バイト

print(io.open"x":read())

1

ルビー

ストア (24バイト)

File.write('a', ARGV[0])

取得 (16バイト)

p File.read('a')

4
質問では、引数ではなくSTDINからの入力を保存するように求められます
-Ferrybig

その後、引数を含むIOの代替を許可するように編集しました。
ジャレッドK

1
File.write'a',getsそして、p File.read'a'少し短いです;)
DarkWiiPlayer

1

C(Unix / GNU)、23 + 23 = 46バイト

ストア、27 23バイト

main(){system("dd>f");}

取得、27 23バイト

main(){system("dd<f");}

これは基本的にjofelの答えをCプログラムにラップします。

注:ddコマンドはstderr、いくつかの統計をに出力するため、シェルで単純に実行すると、追加の出力が表示されます。ただし、チャレンジでは、保存された文字列をでなくに提示する必要があるとしか示されてstdoutいないためstderr、追加の出力を許可することを許可しますstderr...とにかく、stderr出力の抑制はに置き換えるのddと同じくらい簡単catで、それぞれ2つのプログラム。


コンパイラによっては、intから戻り値の型を削除することもできますmain。古いANSI Cスタイルでintは、デフォルトの戻り型です。
ヤコブ

@Jakobああ、もちろん。私は、暗黙のうちに暗黙のうちに宣言し、system()それについて忘れていましたmain()。それを指摘してくれてありがとう:-)
cmaster

1

PHP、26 + 1 + 21 = 48バイト

Store.php:

<?fputs(fopen(s,w),$argn);

で実行しecho <input> | php -nF Store.phpます。

Retrieve.php:

<?=fgets(fopen(s,r));

で実行しphp -n Retrieve.phpます。


1

C(gcc)77 67 + 25 = 92バイト

私のgccにいくつかの警告だけでコンパイルします。

store.c

#include<stdio.h>
main(int c,char**v){fputs(v[1],fopen("f","w"));}

たぶん、インクルードをゴルフアウトすることはできますが、どうすればよいかわかりませんでした。何も渡さないと、セグメンテーション違反が発生します。

ピーター・コード:-1

read.c

main(){system("cat f");}

int*f=fopen動作するはずです。つまり、ポインタ型についてコンパイラに嘘をつきます。ただし、32ビットシステム(つまりint、などのポインターを保持できるシステムgcc -m32、またはgcc完全な32ビットシステム)向けにコンパイルする場合のみ。mainをとして宣言することもできますし、逆参照していないためmain(int c,char**v)かもしれませんint**v
ピーター

main(int c,char**v)作品。またfputs(v[1],fopen("f","w")、なんらかの理由でまだstdioが必要ですが、できることにも気付きました。
SIGSTACKFAULT

32ビットの実行可能ファイルをコンパイルすれば機能するはずです。x86-64の場合、コンパイラーはint戻り値を32ビットに切り捨ててから、ポインターとして符号拡張します。返さFILE*れたものが下位32ビットであれば動作しますが、x86-64 Linuxではそうではありません。
ピーター

すべてのポインターのサイズが等しい(どちらかというと)システムにいる場合は、fopen手動で宣言することでインクルードを回避できます。引数を指定してオールドスクールに行くと、バイト数も節約できます*fopen();main(c,v)int**v;{fputs(v[1],fopen("f","w"));}
ガストロプナー

1

バッチ-11バイト

%12>f
type f

入力はコマンドライン引数として受信され、(CMDがパラメーターを実行しようとするため、実行試行時に作成されたエラーメッセージと共に)持続しfます。


バッチ-7バイト(非競合)

'>%1
dir

ファイル名には多数の無効な文字が含まれているため、これは一部の文字列では機能しませんが、パラメーターで指定されたファイル名に任意の文字を保存します。これを読み取るには、ディレクトリ内の文字列を含むすべてのファイルをリストするだけです。


1
ソリューションはSTDOUTに出力されるように見えますが、これは有効です。STDERRは単なるオプションであり、必須ではありません。入力を囲む引用符は、入力の競合を止めるものではありません。唯一の質問は、バイトカウントでカウントする必要があるかどうかです。彼らは質問に固有ではないので、私はそうは思いません。それらは、コマンドライン引数をとるバッチの標準ボイラープレートのように見えます。これは、標準コマンドラインフラグを必要とする言語とそれほど違いはありません。たぶん、バッチの知識を持つ他の誰かがチャイムインします。今のところ、それらをバイトカウントから除外します。コードゴルフへようこそ!:)
ジャレッドK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.