강력한 Darboux 기능 구현


13

Wikipedia 에 따르면 강력한 Darboux 기능은

비어 있지 않은 모든 열기 간격의 이미지가 전체 실제 선인 이미지

즉, 함수 f 3, 임의의 실수 주어진 경우, 강하게 Darboux이다 , BY를 , 발견하는 것이 가능하다 (X) (구별) 사이를 및 B 되도록 F ( X ) = Y .abyxabf(x)=y

이 도전의 목적을 위해, 우리는 대신 합리적인 다 보스 기능을 고려할 것입니다.

당신의 도전은 다음과 같은 프로그램이나 기능을 작성하는 것입니다.

  • 모든 유리수 입력에 대한 출력으로 유리수를 제공합니다.
  • 주어진 입력에 대해 항상 동일한 출력을 제공합니다.
  • 강력한 Darboux 속성이 있습니다.

입력 및 출력은 다음 중 하나 일 수 있습니다.

  • 언어에 언어가 있거나 하나의 라이브러리 (예 : GMP)가있는 경우 임의 정밀도 숫자 유형.
  • 숫자의 문자열 표현은 항상 소수점과 양쪽에 하나 이상의 숫자를 포함한다고 가정 할 수 있습니다. 그것은 어떤 기준 수있다 b2 이지만 입출력 동일한베이스에 있어야한다. 숫자와 소수점에 문자 세트를 사용할 수 있습니다 (다시 입력과 출력간에 일관되어야 함).

입력은 항상 종료베이스 b 확장을 갖습니다 . 기능 선택에 따라 이론적으로 비 종료베이스 b 확장이있을 수있는 출력은 다음 중 하나를 선택할 수 있습니다.

  • 숫자를 영원히 출력합니다.
  • 추가 정수를 입력으로 사용하고 최소한 그 숫자를 출력하십시오.
  • 입력에있는 수만큼의 자릿수를 출력합니다 (후행 0을 포함 할 수 있음).

이 과제의 특성상 위의 옵션 2에 설명 된 두 번째 입력을 제외하고 숫자를 표준 숫자 유형으로 표현할 수 있다고 가정 하는 규칙은 적용 되지 않습니다 .

종료되지 않는 합리성에만 정의 된 기능을 가진 허점을 피하려면 제출물 이 실제로 원하는 값 임의로 근접하여 출력을 생성 할 수 있어야합니다 . 공식적으로, 유리수에게 주어진 , B , Y , 및 ε을 , 합리적인 번호가 있어야 X 이 선택한 자료의 종료 등 그 < X < B| f ( x ) y | < ε .abyεxa<x<b|f(x)y|<ε


몇 가지 아이디어를 제공하기 위해 Conway base 13 기능에 대한 설명은 다음과 같습니다.

  • x 를 밑 13으로 변환 하고 소수점을 제거합니다.
  • 결과가 [x]A[y]C[z]13 이면, 여기서 [y][z] 는 0에서 9까지의 숫자로만 구성되며 f(x)=[y].[z] .
  • 결과가 [x]B[y]C[z]13 인 경우, 여기서 [y][z] 는 0에서 9까지의 숫자로만 구성되며 f(x)=[y].[z] .
  • 그렇지 않으면 f(x)=0 입니다.

이 기능은 강력하게 Darboux입니다. 예를 들어 123.456 13123.457 13 사이 에서 f ( x ) = 7.89가 되는 x 를 찾고 싶다고 가정 해 봅시다 . base-13 값 123.456 A 7 C 89 13 은이 요구 사항을 충족합니다.123.45613123.45713f(x)=7.89123.456A7C8913

제출하는 것이이 기능의 구현 일 수 있지만 구현하기 훨씬 짧은 다른 강력한 Darboux 기능이 있다고 생각합니다. :)


b

math.stackexchange 링크 및 일부 예제의 속죄 인 원래 질문
Giuseppe

xx

@NickKennedy 감사합니다, 나는 그것을 간과했습니다-명확히하기 위해 질문을 편집했습니다.
Doorknob

1
흠, 나는 모든 종료 입력에 대해 일정하거나 동일 한 강력한 Darboux 기능을 정의 할 수 있다고 확신합니다 ...
Christian Sievers

답변:


4

레티 나 0.8.2 , 43 50 바이트

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5
0(.)
$1

온라인으로 사용해보십시오! I / O는 이진 문자열입니다. 다음과 같이 y이진수를 다른 이진수에 가깝게 인코딩하십시오 a.

  1. a포함하지 않으면 .접미사를 붙입니다.
  2. 경우 a애프터 숫자의 홀수를 포함 .하는 접미사 0.
  3. 경우 y다음 접미사 음 11접미사 그렇지 10.
  4. 의 각 숫자에 대해 y접미어 0뒤에 해당 숫자가옵니다.
  5. 해당 지점에 접미사 y가 포함되어 있으면 에있는 모든 숫자 뒤에 접미사가 붙습니다 ..11y

설명:

^.*\.(..)*1(.)((..)+)1.((..)*)$
$2$*-$3.$5

이진 점에서 시작하는 숫자를 쌍으로 만듭니다. 숫자가 유효한 인코딩 인 경우 마지막 1x숫자 쌍을 a 로 디코딩 .하고 두 번째 마지막을 선택적 -부호 로 디코딩 하십시오. 그 이전의 숫자는 무시됩니다.

0(.)
$1

로 시작하는 쌍을 남겨 두어야 0하므로 0s를 삭제하십시오 .


때때로과 같은 출력을 얻습니다 -.. 그것들은 0을 의미합니까, 아니면 생산되지 않아야합니까?
Outgolfer Erik

@EriktheOutgolfer 나는 *s를 +s로 바꿀 수 있다고 생각 합니다 ..
Neil

실제로 나는 뒤에 숫자를 보장 할 수 없습니다 .. 그래도 여전히 숫자를 보장 할 수 있다고 생각합니다 ..
Neil

숫자가 0 인 추가 단자 0은 .값을 변경하지 않지만 함수 입력의 변경으로 인해 출력이 변경됩니다. 입력이 0이 아니라고 가정 하여이 문제를 해결할 수 있습니다. 또한 오른쪽에서 쌍을 그룹화하면 이것이 "실제 입력에 이론적으로 작동"합니까?
Christian Sievers 2016 년

@ChristianSievers (죄송합니다.받은 편지함을 일찍 보지 못했습니다) 질문의 기본 13 기능에 대한 설명을 기반으로 답변을 작성했으며 종료 표현이 필요합니다. 또한 후행 0이 없다고 가정하고 있다는 것이 맞습니다. (따라서 정수는 항상 112 단계에서 추가 해야합니다 .)
Neil

1

젤리 , 71 바이트

L7*©ṛḅ7WµṪ×⁵d®µ⁴‘¤Ð¡ḊṖ
DF7,8ṣṪ¥ƒṣ9ḅ7×ɗÇƭ€j”,
DFf7r9¤ṫ-Ḍ⁼Ɱ“OY‘TịØ+³çƲ0Ẹ?

온라인으로 사용해보십시오!

기수 10을 입력 및 출력으로 사용하고 Conway 기수 13 기능을 구현하지만 10과 13 대신 기수 7과 10을 사용하는 전체 프로그램입니다. 입력과 출력 모두 쉼표를 소수점 구분 기호로 사용합니다. 출력에는 음수가 선행됩니다.


TIO 링크의 예제에는 입력 및 출력에 숫자 9가 있으므로이 기본 7 숫자는 어떻습니까?
Christian Sievers 2016 년

@ChristianSievers는 입력과 출력을위한 10 진법을 의미했습니다. Base 7은 코드에서 사용되지만 Base 10으로 다시 변환됩니다.
Nick Kennedy

이제 입력을 변경하고 출력에 어떤 영향을 미치는지 이해할 수 있습니다!
Christian Sievers 2016 년

1

망막 ,28 25 26 28 바이트

.*11|22
.
D^`\.
^3
-
4(.)
$1

온라인으로 사용해보십시오!

설명

.*11|22     Delete up to the last 11 and prepend a dot. Also change 22 to a dot.
.
D^`\.       Keep only the last dot, if there is one.
^3          Change 3 at the beginning to a minus sign.
-
4(.)        4 is the escape character.
$1

선행 및 후행 0과 정수 부분이없는 숫자를 출력 할 수 있습니다.

내가 사용할 수 있다면 2 또는 3 바이트 더 골프를 칠 수 있습니다 4+. 그러나 입력에 끝없는 스트림이있는 경우 이론적 결과를 정의하는 방법을 잘 모르겠습니다 4.


1
이 답변을 게시하여 T 자 모양으로 저주를 받았습니다.
jimmy23013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.