行列は中心対称ですか?コードも中心対称ですか?


37

定義

中心対称行列は正方形である行列、その中心の周りに対称です。より厳密には、サイズn × nの行列は、iAn×n以下の関係が満たされます。 i,j([1,n]Z)

Ai,j=An+1i,n+1j

そのような行列の例

これらのマトリックスの対称性の説明を次に示します(前述のウィキペディアの記事から引用)。

本当に良い方法で示された中心対称の5 x 5マトリックス

偶数側の長さ()の中心対称行列:4×4

(1234567887654321)

そして、奇数側の長さ(3×3)のもの:

(123565321)

タスクと仕様

サイズが少なくとも2の正方行列が与えられた場合2、2つの異なる一貫した値のいずれかを出力し、行列が中心対称かどうかを判断します。行列は完全に正の整数で構成されると仮定できます。

ただし、コードも中心対称でなければなりません。つまり、からなるプログラム/関数(又は同等物)でなければならない、である行、含有それぞれがNバイト言語のエンコーディングに、そして上記で与えられた定義を満足しなければならないが、バイトの代わりに、正の整数です。あなたの投稿のスコアはの値になりますN下で、n個nn nnがほど優れています。

これらの抜け穴はデフォルトで禁止されていることに注意しながら、入力を取得し、標準的な方法で適切な形式で出力を提供できます。(オプションで)入力としてサイズnを選択することもできます(入力を1Dリストとして取得する場合を除き、その場合はn 2のみを取得できます)nn2、追加入力としてます)。

テストケース

真実:

[[1, 2], [2, 1]]
[[1, 2, 3], [5, 6, 5], [3, 2, 1]]
[[10, 5, 30], [2, 6, 2], [30, 5, 10]]
[[100, 100, 100], [100, 50, 100], [100, 100, 100]]
[[1, 2, 3, 4], [5, 6, 7, 8], [8, 7, 6, 5], [4, 3, 2, 1]]
[[3, 4, 5, 6, 7], [5, 6, 7, 8, 9], [3, 2, 10, 2, 3], [9, 8, 7, 6, 5], [7, 6, 5, 4, 3]]

偽物:

[[1, 2], [1, 2]]
[[1, 2, 10], [5, 6, 5], [11, 2, 1]]
[[14, 5, 32], [2, 6, 2], [30, 5, 16]]
[[19, 19, 19], [40, 50, 4], [19, 19, 19]]
[[1, 2, 20, 4], [7, 6, 7, 8], [8, 7, 6, 6], [3, 3, 2, 1]]
[[3, 4, 5, 6, 7], [5, 6, 7, 8, 9], [4, 5, 10, 4, 5], [5, 6, 7, 8, 9], [3, 4, 5, 6, 7]]

1
うーん、これはまだコメントなしで括弧と括弧を壊しているので、非ゴルフ言語ではかなり難しいようです。素朴なアプローチは、各行の最後にコメント文字(Pythonのような#)を付けて、コードの下半分がすべてコメントになるようにすることです。
ジョンファンミン

この特定のケースでは、Pythonの@JungHwanMin #が先行するコメントはのでしません作業を#P:インラインのみです
氏Xcoder


6
ソースに対する制限が物事を大きく変え、勝つ基準が異なるので、私はただ違うことを請うと思います。私の意見では、これらの違いで十分です。さらに、他の手法(多くの言語では短いもの-Mathematicaなど)は、flatten + palindromeチェックの代わりに使用できます。
Mr Xcoder

1
@WW要するに、チャレンジをシンプルに保ち、あらゆる種類の望ましくないエッジケースを避けるためです。それに、正方形にすることは私にとってより直感的です。
Mr Xcoder

回答:


21

JavaScript(ES6)、サイズ12 11 9

すべてのバージョンは、中心対称の場合はfalseを返し、非中心対称の場合はtrueを返します


1次元配列+長さ、サイズ9(89バイト)

カレー構文(length)(array)で入力を受け取ります。配列は1次元です。

w=>a=> //
a.some //
(v=>v- //
a[--w])//
/////////
//)]w--[a
// -v>=v(
// emos.a
// >=a>=w

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


マトリックス+幅、サイズ11(131バイト)

カリー化構文の入力を受け取ります(width)(matrix)

/**/w=>a=>a
.some(r=>r.
some(v=>v-a
[y][w-++x],
x=!y--),y=w
);'*/'/*';)
w=y,)--y!=x
,]x++-w[]y[
a-v>=v(emos
.r>=r(emos.
a>=a>=w/**/

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

ペイロード

w => a => a.some(r => r.some(v => v - a[y][w - ++x], x = !y--), y = w)

容器

/**/CODE;'*/'/*';EDOC/**/

マトリックスのみ、サイズ12(155バイト)

これは、マトリックスの幅を自動的に計算する元のソリューションです。

/**/a=>a[w=a
.length-1,s=
'some']((r,y
)=>r[s]((v,x
)=>v-a[w-y][
w-x]))////*/
/*////))]x-w
[]y-w[a-v>=)
x,v((]s[r>=)
y,r((]'emos'
=s,1-htgnel.
a=w[a>=a/**/

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

どうやって?

分割できないいくつかの重要なトークンが必要です。

  • some
  • length
  • )=>

改行は、ほとんどどこにでも挿入できます。

展開されたペイロードコードは次のようになります。

a => a[w = a.length - 1, s = 'some']((r, y) => r[s]((v, x) => v - a[w - y][w - x]))

そして、次の構造内にラップされます。

/**/CODE////*/

逆にすると、有効なブロックコメントになります。

/*////EDOC/**/


15

Befunge-93、サイズ24

   &:00p110p920p::*:v   
vp01:+1g01-1pg02g01&_v#<
>00g`#v_>:           1$^
v2p011<  v:g00p029p01< @
>0g1+20p^>*:#v_1# .#<@ .
v+1g00gg02g01<$ >1+10pv0
>:10g-\88++20g -g-     |
vg02p011_v#`g00g01-1  <1
>1+20p   >:   ^ ^      <
                        
                        
                        
                        
                        
                        
<      ^ ^   :>   p02+1>
1<  1-10g00g`#v_110p20gv
|     -g- g02++88\-g01:>
0vp01+1> $<10g20gg00g1+v
. @<#. #1_v#:*>^p02+1g0>
@ <10p920p00g:v  <110p2v
^$1           :>_v#`g00>
<#v_&10g20gp1-10g1+:10pv
   v:*::p029p011p00:&   

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

入力: n、その後に配列の要素が続き、すべてスペースで区切られます。注:入力が十分に大きい場合は、別のインタープリターを使用する必要がある場合があります。

これを行うためのより良い方法があると確信しています。Befungeでこれを試してみたかっただけです。実際のコード部分は上半分です。

どうやって?

コードは、初期化検証の 2つの主要なセクションに分かれています

初期化:

   &:00p110p920p::*:v   
vp01:+1g01-1pg02g01&_v#<
>00g`#v_>:           1$^

コードのこのセクションでは、入力マトリックスをコードのすぐ下にASCII文字として書き込みます。このセクションと次のセクションでは、コードの左上にある3つのセルをデータとして使用します。それらはとして保存されn, i, jます。

検証:

                     v 
                     1
v2p011<  v:g00p029p01< @
>0g1+20p^>*:#v_1# .#<@ .
v+1g00gg02g01<$ >1+10pv0
>:10g-\88++20g -g-     |
vg02p011_v#`g00g01-1  <1
>1+20p   >:   ^ ^      <

jAj=An+1n+1jj8

i=(n+1)i

j=n+1(j8)+8=(n+1)+(8+8)j

コードの他の部分は、中心対称にするための未読のゴミです。


15

n=8

コメントはありません!

入力を1次元リストとして取得します

s a b=  
    a/=b
f =s<*> 
 reverse
esrever 
 >*<s= f
b=/a     
  =b a s

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

n=10

入力を2次元行列として受け取ります

r =reverse
s a b=a/=b
f   =s<*>r
c  =concat
g =  f<$>c
c>$<f  = g
tacnoc=  c
r>*<s=   f
b=/a=b a s
esrever= r

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

おかげで チャットでお世話 potato44にます。そしてリン、連続してゴルフをする。

説明

ここでの一般的なアイデアはシンプルなものです。 concat、リストを比較し、逆に比較します。ただし、中心対称にしたいので、慎重に踏み込む必要があります。まず、通常どおりコードを記述します。

g=((==)<*>reverse).concat

逆行が有効なHaskellであるためには、方程式の左側が関数定義のように見える必要があります tacnoc.)esrever>*<)==((がそうではない。

これを修正する最初のステップは、括弧を破棄することです。

s a b=a==b
f=s<*>reverse
g=f.concat

しかし、現在いくつかの新しい問題があります。どちら.==私たちの逆行が演算子を再定義しようとしてたときに逆転は、同じです(<*>逆にされ>*<、我々はその前面に細かいですので)。 関数はファンクターなので、.に置き換えることができます<$>。そして、我々は交換することができる==/=私たちの出力を否定している、が、それはスペック内にあります。今、私たちは持っています

s a b=a/=b
f=s<*>reverse
g=f<$>concat

行の長さを短くするためにconcat、とをエイリアスしreverseます。

r=reverse
s a b=a/=b
f=s<*>r
c=concat
g=f<$>c

ここで、すべてを中心対称で正方形にすることでこれを終了します。

短い1-Dバージョンはconcat、削除して2行を保存する必要がないため、ほぼ同じ方法で機能します。


どの程度この N = 10のために?
リン

@Lynnありがとう!私の頭の中の逆<$>もそう<$>でした。
小麦ウィザード

9

Python 2、サイズ10(109バイト)

def f(a):#
 return(a#
==[r[::-1#
]for r in#
a[::-1]])#
#)]]1-::[a
#ni r rof]
#1-::[r[==
#a(nruter 
#:)a(f fed

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

以前のPython 2、サイズ14(209バイト)

lambda a:all(#
a[i][j]==a[-i#
-1][-j-1]for #
i in range(  #
len(a))for j #
in range(len(#
a)))         #
#         )))a
#(nel(egnar ni
# j rof))a(nel
#  (egnar ni i
# rof]1-j-[]1-
#i-[a==]j[]i[a
#(lla:a adbmal

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


1
確かに、再配置のために十分だろうが、FYIされていない場合-i-1-j-1、単純かもしれない~i~j
ミスターXcoder

@氏。Xcoder:少しいじりましたが、結果は変わりません。
チャスブラウン

python3.6でも動作しますが、最適ではない場合があります。
SIGSTACKFAULT

8

Pyth、サイズ6(41バイト)

q_M_QQ
q.q   


   q.q
QQ_M_q

ここで試してみてください

説明

最初の行は、入力と各行を逆にし、入力のコピーが残っているかどうかを確認します。その後、すべてので、プログラムを二行目で出ただけでなく、それ以前には、何もしません。
.qq


8

APL(Dyalog Unicode)、スコア7 6 5 4

完全なプログラム。stdinからの行列式のプロンプト。1または0を出力してから、一貫したエラーをスローします。コメントはありません!

r←,⎕
r≡⌽r
r⌽≡r
⎕,←r

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

 表現のためのプロンプトと、それは評価
, 、それは(平ら)ラヴェル
r← に結果を格納rするために( r avelled)

⌽r 鏡 r
r≡rは、それと同一である かどうかを暗黙的に印刷します

 深さr(1を与える)を
r⌽ 使用rして回転します
 (これは常にを引き起こしRANK ERROR、行列はの左引数として許可されないため終了します


7

Perl 6、サイズ9 8 7

{.flat#
#}talf.
#  ],R[
eq # qe
[R,]  #
.flat}#
#talf.{

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

reverseここがボトルネックです。技術的には長いものに変更しましたが、はるかに分割可能[*-1 X-^*]です。さて、私は[R,]見た後にそれを変更しました別の質問に対するブラッドギルバートの答えを。

平坦化されたコードは {.flat eq [R,] .flat}です。

編集:くそー、私は最初のリストを平坦化する必要さえないことに気づきましたが、サイズ6に短縮しようとしても1バイトが多すぎて収まりません...

{@_#}_@
eq#<<|
[R,] #
# ],R[
|<<#qe
@_}#_@{

:(

ただし、1次元配列として使用する場合、サイズ6に簡単に収めることができます。

{$_# }
eq #_$
[R,] #
# ],R[
$_# qe
} #_${

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


6

Wolfram言語(Mathematica)(REPLのみ)、サイズ8(71バイト)

f=#[[c=-
1;;1;;-1
,c]]==#&
(*      
      *(
&#==]]c,
1-;;1;;1
-=c[[#=f

True中心対称入力のFalse場合、またはそうでない場合に戻ります。

Mathematica REPLでは、構文エラーのある行は無視されます(画面の横に太い赤いバーが表示されます)。ここでは、最初の3行だけf=#[[c=-1;;1;;-1,c]]==#&が実行されます。

このコードは、名前の関数をキャプチャしますf

悲しいことに、組み込みPalindromeQが長すぎます。


6

Pyt、サイズ1

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

入力(連結された行の形式)が回文であるかどうかを確認します。


._。まあ、これは課題に応じて中心対称ではありません:n> =2、しかし素晴らしい仕事。
ザカリー

6
私の理解により n2は、中心対称行列の定義ではなく、入力に対する制約です。
リン

おっと、忘れてた。
ザカリー

5

Japt、サイズ9 4(11バイト)

UªSê


êSªU

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

1次元の入力を受け取り、それが回文であるかどうかを確認します。必要に応じて、いくつかのアスキーアートの2つの空の行を埋めることができます。
古い2次元バージョンでは、入力を2回回転させ、元の入力と等しいかどうかを確認します。

W=U  I
Wz2;II
Vc)eUc
cUe)cV
II;2zW
I  U=W

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


1
いいね!私は6を持っていると思うし、非協力的な4を打ち負かして提出しようとしていますが、どちらもこれよりはるかに簡単です。
シャギー

@Shaggy新鮮な外観を与えた後、同じソリューションを6つにまで減らすことができました。4つは非常に印象的です。
NIT

入力が(現在)1次元配列である場合、これはスコア2で実行できます
シャギー

@Shaggyどのように表示されるかわかりません。ソースはNxNでなければなりません。
NIT


4

、サイズ3

Ṡ=↔
=↔=
↔=Ṡ

オンラインでお試しください!1Dリストとして入力します。各行は関数を定義しますが、最初の行の1行のみが呼び出されます。

Ṡ=↔入力が=その逆()に等しい()かどうかをチェックする回文テストです。


、サイズ4

Ṡ=↔Σ
Σ↔=Ṡ
Ṡ=↔Σ
Σ↔=Ṡ

オンラインでお試しください!2Dマトリックスとしての入力の場合Σ、リストがパリンドロームであることを確認する前に、リストのリストを連結()します。


3

MATL、スコア4

t,!P
]=%?
?%=]
P!,t

入力の形式は[1 2; 2 1];行区切り記号として使用します。

出力はSTDERRを介して行われます(デフォルトで許可されています):

  • 中心対称入力の場合、一貫したエラーエラーが生成されます。TIOの現在のLinuxおよびOctaveバージョンでは、次のSTDERR出力が生成されます(最後の行はで始まりますReal time: ...)。

    octave: X11 DISPLAY environment variable not set
    octave: disabling GUI features
    Python 2.7.15 (default, May 16 2018, 17:50:09) 
    [GCC 8.1.1 20180502 (Red Hat 8.1.1-1)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> >>> /usr/include/c++/8/bits/basic_string.h:1048: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator[](std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference = char&; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]: Assertion '__pos <= size()' failed.
    panic: Aborted -- stopping myself...
    

    このエラーは、LinuxとOctaveのバージョンによって異なる場合がありますが、入力間で一貫しています。

  • 非中心対称入力の場合、エラーは生成されず、TIOのSTDERR出力は

    octave: X11 DISPLAY environment variable not set
    octave: disabling GUI features
    Python 2.7.15 (default, May 16 2018, 17:50:09) 
    [GCC 8.1.1 20180502 (Red Hat 8.1.1-1)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> >>> 
    

オンラインでお試しください!または、すべてのテストケースを確認します。

  • 中心対称:123456
  • 非中心対称:123456

チェックプログラムが中心対称であることをして。

説明

%コメント記号です。これにより、行oの残りが無視されます。改行も無視されます。だからコードはただ

t,!P]=?P!,t

次のことを行います。

t       % Input, implicit. Duplicate
,       % Do twice
  !     %   Transpose
  P     %   Flip vertically
]       % End
=       % Compare element-wise
?       % If all comparisons gave true
  P     %   Implicit input. Transpose. Actually, since there is no more input, an
        %   error is prand the program exits. The rest of the code is not executed, 
        %   and will be described in parentheses
  !     %   (Transpose)
  ,     %   (Do twice)
    t   %     (Duplicate)
        %   (End, implicit)
        % (End, implicit)

3

ハスケル、サイズ11109、8

入力を2Dリストとして受け取ります!(ØrjanJohansenへのクレジット)

r= --r}-
 reverse
(==)<*> 
 r.map{-
-{pam.r 
 >*<)==(
esrever 
-}r-- =r

バグ:2番目の<*>はずです>*<。2Dの場合、欠落-している部分と反転した部分の適切な場所にスペースがありません。
Ørjanヨハンセン


2

Python 2、サイズ8

i=input#
a=i()###
a[::-1##
]!=a<_##
##_<a=!]
##1-::[a
###)(i=a
#tupni=i

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

(長さの)連結された行の1Dリストとして入力を取得します n2)および終了コードによる出力(対称入力の場合は0、それ以外の場合は1)。

リストは、回文であるように単純にチェックされます。そうである場合、比較チェーンa[::-1]!=a<_!=ステップで失敗し、短絡します。そうしないと、未知の変数_が評価され、プログラムがクラッシュします。



2

C#(.NET Core)、スコア13 11 10

l=>a=>a.//
Where((e//
,i)=>e!=//
a[l-i-1]//
).Any()///
///()ynA.)
//]1-i-l[a
//=!e>=)i,
//e((erehW
//.a>=a>=l

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

入力を1D配列、長さをn 2として受け取ります。false中心対称およびtrue非中心対称の場合に戻ります。このバージョンは使用しSystem.Linqますが、チャレンジの特定の要件のために、コードの提出にどのように適合させるかわかりません。展開されたコード:

l => a => a.Where((e,i) => e != a[l-i-1]).Any()

以下は、LINQを使用しない以前の投稿です。

C#(.NET Core)、スコア16 15 13

l=>a=>{/////*
var r=1<2;for
(int i=0;i<l;
)r&=a[i]==a[l
-i++-1];
return r;}
     /*/
   };r nruter
     ;]1-++i-
l[a==]i[a=&r)
;l<i;0=i tni(
rof;2<1=r rav
*/////{>=a>=l

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

展開されたコード:

l => a =>
{
    var r = 1<2;
    for (int i = 0; i < l;)
        r &= a[i] == a[l-i++-1];
    return r;
}

あなたが変更した場合intvar(これもtniするrav)、第二の提出もJavaScriptで動作します。
ザカリー

2

ルビー、スコア9 8

->z{z==#
z.######
reverse#
}#######
#######}
#esrever
######.z
#==z{z>-

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

入力として平坦化された行列を受け取るラムダ。中心対称の場合はtrue、そうでない場合はfalseを返します。

-1 Mr.XCoderのおかげで、

開梱:

->z{
  z == z.reverse
}

2

クリーン、サイズ9

ØrjanJohansenに感謝します!

import //
 StdEnv//
r=reverse
?m=m==r//
    m    
//r==m=m?
esrever=r
//vnEdtS 
// tropmi

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

きれい、サイズ10

import/*//
*/StdEnv//
r =reverse
?m      //
 =m==r m//
//m r==m= 
//      m?
esrever= r
//vnEdtS/*
//*/tropmi

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


1
それは改行のためではなく、インデントで動作します。9行
Ørjanヨハンセン

@ØrjanJohansenあなたがそれらをインデントできることを忘れていたとは信じられません。ありがとう!
18

どういたしまして、投稿後に中央の行を編集しましたm
Ørjanヨハンセン

@ØrjanJohansen私はそれを反映するために答えを更新しました。その方法でも本当にエレガントに見えます。
18

2

05AB1E、サイズ3(11 バイト

ÂQq

qQÂ

単一のリストとして入力します。
オンラインでお試しください。

私はこれは数えないだろうと思う..; p

ÂQ
qâ

単一のリストとして入力します。
オンラインでお試しください。

説明:

         # Bifurcate this list (short for DR: Duplicate & Reverse copy)
 Q        # Check if the input-list and the reversed list are equal
  q       # Terminate the program
   qQâ    # No-ops

いくつかのサイズ3(11 バイト)の選択肢:

R€R
QqQ
R€R

入力としてのマトリックス。
オンラインでお試しください。

RQ 
 q  
 QR

入力としての単一リスト。
オンラインでお試しください。



1

> <>、サイズ6

!/l2(\
s\?\ ?
/{=/ ;
: /={/
? \?\s
\(2l/!

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

(tioで-vに複数の値を渡すのは苦痛です)

入力は、-vを使用した初期スタック状態として1次元配列として取得されます。マトリックスが中心対称の場合は出力なしで終了し、そうでない場合はエラーで終了します(「何かが魚臭い...」と出力します)。

l2(    Checks if the length of the stack is less than 2
?;     Exits cleanly if so

{=     Checks if the first and last elements are equal
?\s    Causes an error ('s' is not a valid instruction) if not

私はこの出力形式に完全に満足していなかったので、ここでは、trueの場合は1、falseの場合は0を出力するサイズ7の形式です。

!/l2(\\
 ?   ?0
 =;n1/n
;{   {;
n/1n;= 
0?   ? 
\\(2l/!

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


良くやった!> <>は、複雑なプログラムでない限り、面倒な作業言語として使用できます。
mbomb007

1
真実と偽の値を入れ替えると、4に減らすことができます{-?;
ジョーキング

1

スタックス、n = 3

$cr
=q=
rc$

実行してデバッグする

説明:

$cr =q= rc$ Full program, implicit input
$           Flatten
 cr         Copy and reverse
    =       Compare to original
     q      Print result
      =     Silently error because there is only one item on stack
        rc$ Not executed

少なくとも3つのコマンドが必要なため、3が最適です:コピー、リバース、および比較

スタックス、n = 4

Mrxr
M=qX
Xq=M
rxrM

実行してデバッグする

説明:

Mrxr M=qX Xq=M rxrM Full program, implicit input
Mr                  Transpose and reverse
  x                 Push input again
   r M              Reverse and transpose
      =             Compare
       qX Xq        Print result twice and save to X
            =       Silently error because there is only one item on stack
             M rxrM Not executed


1

Java 10、サイズ13(181バイト)

a->{var r///*
=1>0;for(int 
l=a.length,i=
0;i<l;)r&=a[i
]==a[l-++i]; 
return r;}   
     /*/     
   };r nruter
 ;]i++-l[a==]
i[a=&r);l<i;0
=i,htgnel.a=l
 tni(rof;0>1=
*///r rav{>-a

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

@CharlieのC#回答に触発されました

ゴルフの説明:

a->{var r=1>0;for(int l=a.length,i=0;i<l;)r&=a[i]==a[l-++i];return r;}

a->{                    //  Method with byte-array parameter and boolean return-type
  var r=1>0;            //  Result-boolean, starting at true
  for(int l=a.length,   //  The length of the input-array
      i=0;i<l;)         //  Loop `i` in the range [0, length)
    r&=                 //   Bitwise-AND the result-boolean with:
       a[i]             //    Whether the current item
           ==a[l-++i];  //    equals the opposite item
  return r;}            //  Return the result


0

Javascript ES6、サイズ8:

/***/a=>
""+a==a.
reverse(
)/////*/
/*/////)
(esrever
.a==a+""
>=a/***/

Javascript ES6、サイズ7(有効ですか?):

a=>""+a
==a.//=
reverse
`     `
esrever
=//.a==
a+"">=a

テスト:

<script>
f=

a=>""+a
==a.//=
reverse
`     `
esrever
=//.a==
a+"">=a
</script>

<script>
console.log([
  [1, 2, 2, 1],
  [1, 2, 3, 5, 6, 5, 3, 2, 1],
  [10, 5, 30, 2, 6, 2, 30, 5, 10],
  [100, 100, 100, 100, 50, 100, 100, 100, 100],
  [1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1],
  [3, 4, 5, 6, 7, 5, 6, 7, 8, 9, 3, 2, 10, 2, 3, 9, 8, 7, 6, 5, 7, 6, 5, 4, 3],
].every(f))

console.log([
  [1, 2, 1, 2],
  [1, 2, 10, 5, 6, 5, 11, 2, 1],
  [14, 5, 32, 2, 6, 2, 30, 5, 16],
  [19, 19, 19, 40, 50, 4, 19, 19, 19],
  [1, 2, 20, 4, 7, 6, 7, 8, 8, 7, 6, 6, 3, 3, 2, 1],
  [3, 4, 5, 6, 7, 5, 6, 7, 8, 9, 4, 5, 10, 4, 5, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7],
].every(x=>!f(x)))
</script>

または、次の名前の変数にラムダが保存されていますa

a=

a=>""+a
==a.//=
reverse
`     `
esrever
=//.a==
a+"">=a

console.log([
  [1, 2, 2, 1],
  [1, 2, 3, 5, 6, 5, 3, 2, 1],
  [10, 5, 30, 2, 6, 2, 30, 5, 10],
  [100, 100, 100, 100, 50, 100, 100, 100, 100],
  [1, 2, 3, 4, 5, 6, 7, 8, 8, 7, 6, 5, 4, 3, 2, 1],
  [3, 4, 5, 6, 7, 5, 6, 7, 8, 9, 3, 2, 10, 2, 3, 9, 8, 7, 6, 5, 7, 6, 5, 4, 3],
].every(a))

console.log([
  [1, 2, 1, 2],
  [1, 2, 10, 5, 6, 5, 11, 2, 1],
  [14, 5, 32, 2, 6, 2, 30, 5, 16],
  [19, 19, 19, 40, 50, 4, 19, 19, 19],
  [1, 2, 20, 4, 7, 6, 7, 8, 8, 7, 6, 6, 3, 3, 2, 1],
  [3, 4, 5, 6, 7, 5, 6, 7, 8, 9, 4, 5, 10, 4, 5, 5, 6, 7, 8, 9, 3, 4, 5, 6, 7],
].every(x=>!a(x)))


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