นี่เป็นตัวเลขสามหลักที่ลงท้ายด้วยหนึ่งหรือไม่


27

ให้ค่าเป็นจำนวนไม่ใช่ค่าลบ, ส่งคืนว่าเป็นตัวเลขสามหลักที่ลงท้ายด้วยหนึ่งในฐานจำนวนเต็มที่สอดคล้องกันหรือไม่ กล่าวอีกนัยหนึ่งตัวเลขต้องแสดงใน base-N, N เป็นจำนวนเต็มมากกว่าศูนย์

กฎระเบียบ

  • นี่คือคำตอบที่สั้นที่สุดจึงชนะ
  • เนื่องจากพฤติกรรมที่แตกต่างกันอย่างน่าประหลาดพฤติกรรมของอินพุต 3 10จึงไม่ได้ถูกกำหนด
  • ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม

ตัวอย่าง

จริง:

5   
73  
101 
1073
17
22
36
55
99  

เท็จ:

8
18
23
27
98
90
88
72
68

หยิบจำนวนมาก:

46656 true
46657 true
46658 true
46659 true
46660 true
46661 false
46662 false
46663 true
46664 false
46665 true
46666 true
46667 false
46668 false
46669 false
46670 true
46671 true

1
เนื่องจากพฤติกรรมเอกวิจิตรพิสดารไม่มันไม่ประพฤติวิจิตรพิสดาร, การแสดงเอกของจำนวนเต็มไม่เป็นลบnเป็นเพียงn 1s เช่น0 = ()₁, 3 = (111)₁, 10 = (1111111111)₁ฯลฯ
เอริก Outgolfer

6
@EriktheOutgolfer มันทำงานแตกต่างกันมาก ตัวอย่างเช่นคุณไม่สามารถหารด้วย 1 ถึง n-thehift ตัวอย่างเช่น
wizzwizz4

3
สิ่งที่ไม่สอดคล้องฐานจำนวนเต็มหมายถึงอะไร? (นอกจากนี้แทนที่จะยกเว้น unary ในกฎคุณสามารถระบุ N ≥ 2 ได้)
Lynn

1
@Lynn สัญกรณ์ตำแหน่งที่มีเลขฐานเดียวเช่นฐานสิบเมื่อเทียบกับฐานที่ขึ้นกับตำแหน่งเช่นที่คุณเห็นกับหน่วยของจักรวรรดิหรือเวลา
HAEM

1
@ ลินน์เป็นภาคผนวกฉันก็พยายามที่จะแยกฐานเหตุผลเหตุผลเชิงลบที่ซับซ้อน ฯลฯ สำหรับประเด็นที่สองของคุณกฎเกี่ยวกับเอกภาพนั้นมีวัตถุประสงค์เพื่อไม่รวมหรือแยกออกจากเอกภาพ หากฉันไม่เข้าใจกฎหมายด้านภาษาแม้แต่คนที่อ่อนแอกว่าที่ฉันคิด "พฤติกรรมที่ไม่ได้กำหนด" หมายถึง "ทุกสิ่งที่พรรคดำเนินการต้องการ" ซึ่งเป็นสิ่งที่ฉันต้องการ
HAEM

คำตอบ:


10

เยลลี่ขนาด 7 ไบต์

bRṫ€3ċJ

ส่งคืนจำนวนฐาน (ไม่ใช่ศูนย์เป็นความจริง, ศูนย์เป็นเท็จ) ซึ่งอินพุตเป็นตัวเลขสามหลักที่ลงท้ายด้วยหนึ่ง

ลองออนไลน์!

มันทำงานอย่างไร

bRṫ€3ċJ  Main link. Argument: n

 R       Range; yield [1, ..., n].
b        Base; convert n to bases 1, ..., n.
  ṫ€3    Tail each 3; remove the first two elements of each digit array.
      J  Indices of [n]; yield [1].
     ċ   Count the number of times [1] appears in the result to the left.

10

JavaScript (ES7), 43 40 39 ไบต์

f=(n,b)=>n<b*b?0:n%b==1&n<b**3|f(n,-~b)

กรณีทดสอบ

ความคิดเห็น

f = (n,           // given n = input
        b) =>     // and using b = base, initially undefined
  n < b * b ?     // if n is less than b²:
    0             //   n has less than 3 digits in base b or above -> failure
  :               // else:
    n % b == 1 &  //   return a truthy value if n is congruent to 1 modulo b
    n < b**3 |    //   and n is less than b³ (i.e. has less than 4 digits in base b)
    f(n, -~b)     //   or the above conditions are true for some greater value of b






3

Mathematica, 43 ไบต์

!FreeQ[IntegerDigits[#,2~Range~#],{_,_,1}]&

ลองออนไลน์!

หรือลองออนไลน์! (จำนวนมาก)

Martin Ender บันทึก 3 ไบต์


!FreeQ[#~IntegerDigits~Range@#,{_,_,1}]&สั้นลงเล็กน้อยถ้าคุณไม่เห็นIntegerDigits::ibase: Base 1 is not an integer greater than 1.คำเตือน (มันยังคงส่งคืนคำตอบที่ถูกต้อง)
Misha Lavrov

3

ภาษา Wolfram (Mathematica) , 35 ไบต์

Or@@Array[x~Mod~#==1<x/#^2<#&,x=#]&

ลองออนไลน์!

อย่างชัดเจนตรวจสอบว่าn% i = 1และฉัน2 <n <i 3ฐานที่เป็นไปได้ฉัน เพื่อจุดประสงค์ในการเล่นกอล์ฟความไม่เท่าเทียมจะถูกจัดใหม่เป็น1 <n / i 2 <iเพื่อที่จะได้ถูกล่ามโซ่ไว้บนความเท่าเทียมกัน




2

APL (Dyalog Unicode) , 21 20 14 ไบต์SBCS

-5 ขอบคุณ @ngn

โซลูชันทางคณิตศาสตร์ล้วนๆ (ไม่ได้ทำการแปลงพื้นฐานใด ๆ ) และเร็วมาก

3∊⊢(|×∘⌈⍟)⍨1↓⍳

ลองออนไลน์!

⊢(... )⍨1↓⍳ หนึ่งลดลงจากɩ ndices 1 ... โต้แย้งและข้อโต้แย้งที่ใช้:

| ส่วนที่เหลือ

×∘⌈ คูณปัดเศษขึ้น

 log Nอาร์กิวเมนต์

3∊ สมาชิกสามคนนั้นคืออะไร?


คุณสามารถบันทึก 1 ด้วยกลอุบายมาตรฐานของการแลกเปลี่ยนข้อโต้แย้ง:⊢(∨/(3=∘⌈⍟)∧1=|)⍨1↓⍳
ก.ย.

@ngn ขอบคุณ ครั้งต่อไปอย่าลังเลที่จะแก้ไขสิ่งนั้น (ถ้าคุณรู้สึกว่ามัน)
อดัม

ตกลง. นี่คือการปรับปรุงที่ซับซ้อนมากขึ้นซึ่งฉันปล่อยให้คุณจัดการ - มันทำให้มันสั้นเหมือนกับโซลูชันอื่น ๆ ของคุณ:(⊂1 3)∊⊢(⌈|,¨⍟)⍨1↓⍳
ก.ย.

1
3∊⊢(|×|×∘⌈⍟)⍨1↓⍳
ngn

2
@ngn 1=⌈a⍟b, a≤b→การa=b→การ0=a|b0=b|b
อดัม


1

Huskขนาด 15 ไบต์

V§&o=1→o=3LṠMBḣ

ลองออนไลน์!

คำอธิบาย

V§&(=1→)(=3L)ṠMBḣ  -- implicit input, for example: 5
             ṠMB   -- map "convert 5 to base" over..
                ḣ  --   range [1..5]
                   -- [[1,1,1,1,1],[1,0,1],[1,2],[1,1],[1,0]]
V                  -- does any of the elements satisfy the following
 §&( 1 )( 2 )      --   apply functions 1,2 and join with & (logical and)
         =3L       --     is length equals to 3?
    =1→            --     is last digit 1?

1

PHP, 48 + 1 ไบต์

while(++$b**2<$n=$argn)$n%$b-1|$n>$b**3||die(1);

ออกด้วย0สำหรับ falsy (หรืออินพุต3) 1เพื่อความจริง
ทำงานเป็นท่อที่มี-nRหรือลองออนไลน์


1

C, 60 ไบต์

ฟังก์ชันที่ส่งกลับค่าที่ไม่ใช่ศูนย์หากอาร์กิวเมนต์สามารถแสดงเป็นตัวเลขสามหลักที่ลงท้ายด้วย 1:

i,j;f(n){for(j=0,i=sqrt(n);i>cbrt(n);)j+=n%i--==1;return j;}

หมายเหตุ: ใช้งานได้กับ GCC ซึ่งมีฟังก์ชันในตัว สำหรับคอมไพเลอร์อื่น ๆ คุณอาจต้องตรวจสอบให้แน่ใจว่ามีการรู้ประเภทอาร์กิวเมนต์และชนิดส่งคืน

#include<math.h>

คำอธิบาย

ฐานที่ต่ำที่สุดซึ่งnแสดงเป็นตัวเลข 3 หลักคือ⌊∛n⌋และฐานที่ต่ำที่สุดซึ่งnแสดงเป็นตัวเลข 2 หลัก⌊√n⌋ดังนั้นเราเพียงทดสอบว่าจำนวนนั้นสอดคล้องกับ 1 โมดูโลใด ๆ ในช่วง 3 หลักหรือไม่ เราคืนค่าจำนวนฐานที่เป็นไปตามเงื่อนไขโดยให้ค่าที่ไม่ใช่ศูนย์ (จริง) หรือศูนย์ (เท็จ) ตามความเหมาะสม

โปรแกรมทดสอบ

ส่งผ่านอินพุตจำนวนเท่าใดก็ได้เป็นพารามิเตอร์ตำแหน่ง:

#include<stdio.h>
int main(int c,char**v)
{
    while(*++v)
        printf("%s => %d\n", *v, f(atoi(*v)));
}

1

APL (Dyalog Unicode) , 19 ไบต์SBCS

วิธีการของเดนนิส

(⊂,1)∊2↓¨⊢⊥⍣¯1¨⍨1↓⍳

ลองออนไลน์!

(⊂,1)∊ เป็น[1]สมาชิกคนหนึ่งของ

2↓¨ สององค์ประกอบลดลงจากแต่ละ

⊢⊥⍣¯1¨⍨ อาร์กิวเมนต์ที่แสดงในแต่ละฐาน

1↓⍳ หนึ่งลดลงจากɩ ndices ที่ 1 ถึงข้อโต้แย้งหรือไม่



0

Pyt , 35 33 ไบต์

←ĐĐ3=?∧∧:ŕĐ2⇹Ř⇹Ľ⅟⌊⁺3=⇹Đ2⇹Ř%*ž1⇹∈;

คำอธิบาย:

←ĐĐ                                             Push input onto stack 3 times
   3=?  :                       ;               If input equals 3, execute code after the question mark;otherwise, execute code after the colon. In either case, afterwards, execute the code after the semicolon
      ∧∧                                        Get 'True'
        :                                       Input not equal to 3
         ŕ                                      Remove 'False'
          Đ2⇹Ř                                  Push [2,3,...,n]
              ⇹Ľ⅟⌊⁺                             Push [floor(log_2(n))+1,floor(log_3(n))+1,...,floor(log_n(n))+1]
                   3=                           Is each element equal to 3
                     ⇹                          Swap the top two elements on the stack (putting n back on top)
                      Đ2⇹Ř                      Push [2,3,...,n]
                          %                     Push [n%2,n%3,...,n%n]
                           *                    Multiply [n%x] by the other array (i.e. is floor(log_x(n))+1=3?)
                            ž                   Remove all zeroes from the array
                             1⇹∈                Is 1 in the array?
                                ;               End conditional
                                                Implicit print

ลองออนไลน์!


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.