私を数えてください!


24

あなたの仕事は簡単です。スニペットをn回繰り返すと、スペースで区切られたnを10進数、8進数、16進数の順に出力する任意の言語でスニペットを投稿します。nはゼロより大きい整数です。先行ゼロはありません。最短回答が勝つ

スニペットがABC次の場合、テストケースは

ABC 
1 1 1
ABCABC
2 2 2
ABCABCABCABCABCABCABCABCABC
9 11 9
ABCABCABCABCABCABCABCABCABCABCABCABC
12 14 C
ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABC
18 22 12

4
印刷しても大丈夫1 01 0x1ですか?(プレフィックスを含む)
ブルー

暗黙の入力/出力を備えた言語を使用している場合は、値を増分するだけの1バイトのソリューションを使用できます...
Esolanging Fruit

回答:


11

Japt、12バイト

[°TTs8 TsG]¸

2バイトを節約してくれた@ETHproductions感謝します!

私の𝔼𝕊𝕄𝕚𝕟の答えと同じです。


7
:Oデニスを破った!
ダウンゴート

Figureはそれをすることができず、あなたはすでにTeascriptを実行していました。
ママファンロール

素晴らしい:)ここに2バイトが保存されています[°TTs8 TsG]¸
。– ETHproductions

ああ、それを見なかった。ありがとう!
ママファンロール

14

Perl、30バイト

printf"\r%d %o %x",++$n,$n,$n;

行の先頭に戻り、カウンターをインクリメントし、カウンターを印刷して古い出力を上書きします。


仕様の穴を見つけるための+1、出力の消去により、この課題は簡単になります。
-Akangka

1
@ChristianIrwan:実際に(私は私の記述を修正しました)消去が、上書きしない
nimi

1
両方とも挑戦を台無しにします。
アカンカ

12

JavaScript、54 53 51 47バイト

@ user81655のおかげで4バイト節約

var d=-~d;d+` ${d[b='toString'](8)} `+d[b](16);

私は実際、この作品にちょっと驚いています。

説明

var d=-~d;  // `var` let's `d` not throw an error if it's not defined 
            // -~ essentially increments the variable
d+                    // decimal
` ${                  // space character
   d[b='toString'](8) // octal
} `                   // space character
+d[b](16)             // Hexadecimal

オンラインで試す


Iirc、varを削除できます
コナーオブライエン

エラーを引き起こす@CᴏɴᴏʀO'Bʀɪᴇɴ:、ReferenceError: Can't find variable: dルーズモードであってもD:
Downgoat

DOESのd=d?d+1:1作品?
コナーオブライエン

@CᴏɴᴏʀO'Bʀɪᴇɴいいえ、まだ参照エラーがスローされます。ルーズモードが有効になっていると考えると奇妙です
...-Downgoat

それが定義されていないもののOhhhh我々はアクセスdにしようとしているので
コナー・オブライエン

7

C ++、205 179バイト

int main(){};static int c=1;
#define v(x) A##x
#define u(x) v(x)
#define z u(__LINE__)
#include <cstdio>
class z{public:z(){++c;};~z(){if(c){printf("%d %o %x",--c,c,c);c=0;}}}z;//

(末尾の改行なし-コピーする場合、コピーの最初の行とオリジナルの最後の行が一致する必要があります)

基本的に、これは、構築時にグローバル変数カウンタをインクリメントする静的変数のシーケンスを作成することで機能します。次に、破棄時に、カウンターが0でない場合、すべての出力を行い、カウンターをゼロに設定します。

名前の競合のない一連の変数を定義するには、次のように説明されているマクロを使用します。

#define v(x) A##x    //This concatenates the string "A" with the input x.
#define u(x) v(x)    //This slows down the preprocessor so it expands __LINE__ rather than yielding A__LINE__ as v(__LINE__) would do.
#define z u(__LINE__)//Gives a name which is unique to each line.

これは、文字列プロセッサの癖にやや依存しています。z別々の行にコピーされたときに互いに競合しないクラス/変数を定義するために何度も使用します。さらに、1回だけ発生する必要がある定義は最初の行に配置され、コードのコピーでコメント化されます。#defineそして#include文はとても特別な処理を必要としない、彼らは繰り返し受けることを気にしません。

このコードは、ステートメント内の未定義の動作も特徴としています。

printf("%d %o %x",--c,c,c)

シーケンスポイントはありませんが、cは変更されてアクセスされるためです。LLVM 6.0は警告を与えるが、必要に応じてそれをコンパイルする-ことを--c評価する前にc。2バイトを犠牲--c;にして、出力の前にステートメントを追加し、to に変更--cするprintfc、警告がなくなります。


置き換えstd::coutprintf弟の提案に26のバイトの感謝を保存します。


6

CJam、20 19 18バイト

];U):USU8bSU"%X"e%

1バイトのゴルフをしてくれた@MartinBüttnerに感謝します!

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

使い方

]                  e# Wrap the entire stack in an array.
 ;                 e# Discard the array.
  U                e# Push U (initially 0).
   ):U             e# Increment and save in U.
      S            e# Push a space.
       U8b         e# Convert U to base 8 (array of integers).
          S        e# Push a space.
           U"%X"e% e# Convert U to hexadecimal (string).

4

𝔼𝕊𝕄𝕚𝕟、14文字/ 28バイト

[⧺Ḁ,Ḁß8,Ḁⓧ]ø⬭;

Try it here (Firefox only).

最初の答え!おそらくこれを処理するより良い方法がありますが。

説明

[⧺Ḁ,Ḁß8,Ḁⓧ]ø⬭; // implicit: Ḁ = 0
[⧺Ḁ,             // increment Ḁ by 1
    Ḁß8,         // octal representation of Ḁ
        Ḁⓧ]     // hex representation of Ḁ
            ø⬭; // join above array with spaces
                 // repeat as desired until implicit output

7
この言語は何ですか?
コールジョンソン


3

MATL、26バイト

現在のリリース(6.0.0)を使用します。Octaveで動作します。

0$N1+ttYUb8YAb16YA3$XhZc1$

一度:

>> matl 0$N1+ttYUb8YAb16YA3$XhZc1$
1 1 1

2回:

>> matl 0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$
2 2 2

16回:

>> matl 0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$0$N1+ttYUb8YAb16YA3$XhZc1$
16 20 10

説明

スタック内の要素の数は、スニペットを実行した回数を示すために使用されます

0$         % specify zero inputs for next function, in case this is not the first
           % occurence of the snippet.
N          % number of elements in stack
1+         % add one
tt         % duplicate twice. We now have three copies of the number
YU         % convert to string (decimal)
b8YA       % bubble up number and convert to octal string
b16YA      % bubble up number and convert to hex string
3$XhZc     % join top three elements (strings) with a space
1$         % specify one input for next function. If the program ends here, that next
           % function will be implicit display, so it will print the top of the stack.
           % Else the stack will be left with one element more than at the beginning of
           % the current snippet

2

OCaml、198バイト

;;open Char
;;(if Sys.argv.(0).[0]='~'then Sys.argv.(0).[0]<-'\000'else Sys.argv.(0).[0]<-chr(1+int_of_char Sys.argv.(0).[0]));let n=1+int_of_char Sys.argv.(0).[0]in Printf.printf"\r%d %o %x"n n n

末尾の改行が含まれており、ファイル名はチルダで始まる必要があります(私は使用しました~.ml。これはで実行できますocaml \~.ml)。文字列内のすべての文字が可変でありSys.argv.(0).[0]、ファイル名の最初の文字であるという事実を悪用します。

のASCIIコード~は126であり、出力に1を追加するため、n = 1〜126でのみ機能するはずです。n = 1から125だけが必要な場合は、2バイト短くすることができます。126回繰り返された後、n = 1に戻ります。

これは私の初めてのゴルフですので、コメントや改善は大歓迎です。

ゴルフされていないバージョン:

;; open Char
;; if Sys.argv.(0).[0] = '~' 
   then Sys.argv.(0).[0] <- '\000'
   else Sys.argv.(0).[0] <- chr (1 + int_of_char Sys.argv.(0).[0])
;; let n = 1 + int_of_char Sys.argv.(0).[0] in
   Printf.printf "\r%d %o %x" n n n

+1私の質問には多くの穴があるので、自分の質問に投票することにしました。(しかし、それはできません。)
Akangka

私は繰り返されることに不審ですSys.argv.(0).[0]。ただし、OCamlについてはあまり知りません。
アカンカ

2

TeaScript21 20バイト

[┼d,dT8),dT16)]j(p);

自動的に閉じるようにする必要があります ;

オンラインで試す

説明

になる ++

    // Implicit: d = 0
[   // Start array
 ++d,  // Increment d, decimal value
dT8),  // d to base 8
dT16)  // d to base 16
]j(p); // Join by spaces
    // Implicit: Output *last* expression

Downvote?この答えには何か問題がありますか?ASCII Character Jumbleにも関係するのでしょうか。これも、少なからずとも数分以内にダウン投票されました-Downgoat
1

1

Perl、40バイト

$_=<<'';printf"%d %o %x",(1+y/z//)x3;
:

コロンの後ろに最後の改行があります。

最初の行の後のすべてをヒアドキュメントとして扱い、そのz中にカウントします。コードをさらにコピーするたびに、1つずつz追加されます。1最初のスニペット(実行されるスニペット)がないため、カウントに追加する必要があります。

stderrへの追加出力が許可されている場合、2つの一重引用符''を省略して38バイトまで取得できます。なしで''perlが非推奨の機能に関する警告が表示されます。


1

Mathematica、76バイト

ご了承ください n前に何の定義を持っていないはずです。

0;If[ValueQ@n,++n,n=1];StringJoin@Riffle[IntegerString[n,#]&/@{10,8,16}," "]

ここでは、の動作;が使用されます。上記のスニペットは1つのシングルCompoundExpressionですが、2つのスニペットをまとめると、まだ1つのスニペットがありますCompoundExpression以下に示すようにます。(不必要な再配置がいくつか行われます。)

0;
If[ValueQ@n,++n,n=1]; StringJoin@Riffle[IntegerString[n,#]&/@{10,8,16}," "] 0;
If[ValueQ@n,++n,n=1]; StringJoin@Riffle[IntegerString[n,#]&/@{10,8,16}," "] 0;
If[ValueQ@n,++n,n=1]; StringJoin@Riffle[IntegerString[n,#]&/@{10,8,16}," "]

(* 3 3 3 *)

したがって、明示的に記述すると、そのようなスニペットを機能させることはできませんCompoundExpression。また、あなたが好きなほとんどすべては最初の前に置くことができる;ようなEPiまたはMandelbrotSetPlot[]、。


1

bash、49バイト

ファイルcount.bash

((++n));trap 'printf "%d %o %x\n" $n $n $n' exit;

...末尾の改行はありません。

実行:

$ bash count.bash
1 1 1
$ cat count.bash count.bash count.bash | bash
3 3 3
$ for i in $(seq 10) ; do cat count.bash ; done | bash
10 12 a

1

Python 2、54バイト

n=len(open(__file__).read())/54;print n,oct(n),hex(n)#

末尾の改行はありません。フォームでの出力1 01 0x1

うまくいかない場合は、56バイト

n=len(open(__file__).read())/56;print"%d %o %x"%(n,n,n)#

互いの前に貼り付けられると、貼り付けられるたびにファイルの長さが1行長くなります。基本ケースは2行で始まるため、行の長さから1を引く必要があります。計算はコメントによって抑制されます。


"%d %o %x"%(n,n,n)、それはかなりクールです。それができるとは思いもしませんでした。プレフィックスを残すことは大丈夫ではないことが判明した場合、私はそれを借りる必要があります。
rp.beltran

1

Python 2.x 140バイト

これは、過度に競争力のあるソリューションを意図したものではなく、マルチスレッドコードゴルフの試みであり、面白い方法でした。

import thread;n=eval("n+1")if"n"in globals()else 1;
def t(c):99**99;print("%s "*3)%(n,oct(n),hex(n))*(c==n)
thread.start_new_thread(t,(n,));

カウンターを保持し、カウントごとにスレッドを生成し、(バイトを保存するタイマーの代わりに)高価な数学の問題の完了後にカウンタータイマーがオフになったときにカウンターが変更されていない場合、フォーマットされた文字列が出力されます。

いくつかの構成例とその出力:

import thread;n=eval("n+1")if"n"in globals()else 1;
def t(c):99**99;print("%s "*3)%(n,oct(n),hex(n))*(c==n)
thread.start_new_thread(t,(n,));

Outputs 1 01 0x1 

15個のコピーペースト:

import thread;n=eval("n+1")if"n"in globals()else 1;
def t(c):99**99;print("%s "*3)%(n,oct(n),hex(n))*(c==n)
thread.start_new_thread(t,(n,));import thread;n=eval("n+1")if"n"in globals()else 1;
def t(c):99**99;print("%s "*3)%(n,oct(n),hex(n))*(c==n)
thread.start_new_thread(t,(n,));import thread;n=eval("n+1")if"n"in globals()else 1;

...


Outputs 15 017 0xf 

thread.start_new_threadPythonはコードゴルフのより悪いメソッド名を考えたでしょうか?
rp.beltran

私はこれがpython 3.xで動作するかどうかに興味がありますが、気づかないことは何もありませんが、python 3でスレッド化したことはありません
。– rp.beltran


0

ルビー、35バイト

1;$.+=1;$><<"#$. %1$o %1$x"%$.*-~-0

各スニペットは増加します$.(ファイルが読み取られていない場合は0から始まります)が、最後のものだけが何かを出力します。*-~-0*1、文字列を1回印刷することを意味しますが、連結すると*-~-01、0に評価される8進表現になり$><<ます。末尾の改行が含まれないため、空の文字列を印刷すると、何も印刷されません。

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