2つの織り交ぜられたチェーン


9

、この質問、私は機能と「チェーン」機能を定義しました。

  • 順列です。つまり、すべての値が1つの値にマップされ、1つの値によってのみマップされます。

  • また、関数またはその逆を繰り返し適用することにより、他の値から任意の値を取得できます。

これを行う関数はたくさんあり、それらのいくつかは非常に単純です(その質問の回答を参照してください)。次に、「織り交ぜられた」関数と呼ぶ関数の別のクラスを定義します。織り交ぜ機能セットに機能であるA 2つの無限パーティション有し、0および1機能の両方に鎖関数であるように01

値ことをこれは、0の値にマップすることができない1関数またはその逆の下で。

仕事

あなたの仕事は、正の整数に対して織り交ぜられた関数を実行または定義するコードを書くことです。織り交ぜの基準を満たしていれば、機能は何でもかまいません。答えに関数が織り込まれている理由についての説明を含める必要があります。

これは質問なので、回答はバイト単位でスコアリングされ、バイト数が少ないほど優れています。


@flawrありがとう!その単語を探していましたが、思いつきませんでした。
アドホックガーフハンター2017

追加の変換、つまりすべての偶数とすべての奇数を別々に列挙する必要があるだけなので、これはあなたがリンクした最後の課題のだましだと考えられると思います。あなたがここで得ている答えのいずれも、実質的に新しいものを提供するとは思いません。
flawr 2017

@flawrできますが、最善の方法ではありません。私はこれで少し実験をしました、そしてこれらのタイプの機能を実行するいくつかの新しい方法があります。
アドホックガーフハンター2017

回答:


2

Python、46 42 37バイト

@notjaganのおかげで5バイト節約

lambda x:1<x<4and x*2%5or x-(x&2)*4+4

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

4のステップと2および3のリンクで偶数と奇数を反復します。

=> 22 => 18 => 14 => 10 => 6 => 2 => 4 => 8 => 12 => 16 => 20 => 24 =>
=> 23 => 19 => 15 => 11 => 7 => 3 => 1 => 5 => 9 => 13 => 17 => 21 =>

1

JavaScript、30 24バイト

a=>(a+=a&2?-4:4)<0?a*a:a

シーケンス:

  1. ... 19 15 11 7 3 1 5 9 13 17 21 ...
  2. ... 18 14 10 6 2 4 8 12 16 20 24 ...

コードスニペット

f=a=>(a+=a&2?-4:4)<0?a*a:a
console.log('23 19 15 11 7 3 1 5 9 13 17'.split` `.map(a=>f(a|0)).join` `);
console.log('22 18 14 10 6 2 4 8 12 16 20'.split` `.map(a=>f(a|0)).join` `);


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