พิมพ์พวงของตัวเลขที่ไม่น่าสนใจ!


40

จำนวนจืด (ซึ่งผมโดยสิ้นเชิงไม่ได้ทำขึ้นเพียงสำหรับความท้าทายนี้) จะถูกสร้างขึ้นเช่นนี้

  1. รับจำนวนเต็มบวก N
  2. สร้างหมายเลขใหม่ O โดยเพิ่มตัวเลขของ N ที่ส่วนท้ายของ N
  3. หมายเลขที่ไม่น่าสนใจสุดท้ายคือ O * N

ตัวอย่างเช่นสำหรับ N = 12:

  1. O = 1212
  2. O * N = 1212 * 12
  3. หมายเลขสุดท้ายคือ 14544

อินพุต

จำนวนเต็มบวก N (N> 0) หรือเทียบเท่าภาษาของคุณ คุณไม่จำเป็นต้องรับอินพุตที่ไม่ถูกต้อง

เอาท์พุต

หมายเลขที่ไม่น่าสนใจที่สอดคล้องกัน

กรณีทดสอบ

  1 -> 11
  2 -> 44
  3 -> 99
 10 -> 10100
174 -> 30306276

เกณฑ์การให้คะแนน

รหัสที่สั้นที่สุดในไบต์ชนะ


9
จะต้องมีรายการ OEIS ที่เกี่ยวข้อง ...
MKII

1
@Seims มันเป็นเรื่องตลกตามชื่อ "uninsteresting"
MKII

7
@MKII ไม่ดีฉันไม่ได้พูดตลก
Seims

1
การใช้ตัวเลขเป็นอาร์กิวเมนต์สตริงดัดกฎมากเกินไปหรือไม่
Dom Hastings

1
ไปข้างหน้างอกฎ! : P
Seims

คำตอบ:


38

05AB1E , 3 ไบต์

Ы*

อธิบาย

Ð    # triplicate input
 «   # conactenate
  *  # multiply

ลองออนไลน์


2
อ่าอืม! Ninja'd ฉันภายในไม่กี่วินาที: p
Adnan

2
@Adnan Hehe การแก้แค้นในครั้งนั้นที่คุณทำกับฉัน: P
Emigna

1
3 การดำเนินการ 3 ไบต์ฉันไม่คิดว่าคุณจะทำให้มันสั้นกว่านี้
Lasse Meyer

2
@busukxuan Yep เชื่อมต่อกันโดยอัตโนมัติแปลงตัวเลขเป็นstrและ*ตีความสตริงเป็นตัวเลข มีประโยชน์มาก :)
Emigna

2
@busukxuan ใช่การรวมกันของ Pyth และ 05AB1E จะได้ทำใน 2 ไบต์ :)
Emigna

29

JavaScript (ES6), 10 ไบต์

_=>(_+_)*_

จะต้องมีการเรียกว่ามีการโต้แย้งว่าเป็นไม่ได้StringNumber

การใช้งาน:

(_=>(_+_)*_)('3')
99

-3 ไบต์ขอบคุณคำแนะนำของ@Quill


1
หากคุณสามารถส่งพารามิเตอร์เป็นสตริงได้คุณสามารถตัดสองไบต์ออกจากโซลูชันนี้ได้_=>(_+_)*+_
Quill

3
มันทำงานยังไงกันแน่? ถ้าฉันเข้าใจอย่างถูกต้องคุณใช้_เป็นอักขระตามอำเภอใจของตัวแปรหรือไม่? (PS - (_+_)ดูเหมือนว่าจะเป็นก้นทั้งหมด)
charredgrass

@charredgrass $ก็สามารถใช้ได้
cat

11
การหล่อแบบไม่เหมาะสมที่สิบเอ็ด
Downgoat

3
ออกจากดอกเบี้ยที่ดีที่สุดที่ฉันจะทำอย่างหมดจดคณิตศาสตร์ 30 ไบต์ใน ES7 n=>(1+10**-~Math.log10(n))*n*n(เศร้า-~มีความสำคัญสูงกว่า**) หรือ 31 ใน n=>-~`1e${-~Math.log10(n)}`*n*nES6 แม้แต่การเรียกซ้ำก็เอาฉันไป 32 ไบต์:f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
นีล

24

Java 8, 29 26 25 21 Bytes

ขอให้พระเจ้าคุ้มครองแลมบ์ดา

c->new Long(c+""+c)*c

c-> Long.decode (c + "" + c) * ค;


28
คุณต้องรักชวา แม้จะมี lambdas ของ Java 8 และหนึ่งในคำตอบของ Java ที่สั้นที่สุดเท่าที่เคยมีมาใน codegolf ก็ยังคงมีจำนวนมากกว่าคำตอบปัจจุบันทั้งหมด xD
Kevin Cruijssen

3
java เป็นแบ, แลมบ์ดาเป็น
แบ

3
@KevinCruijssen ฉันยังมีความหวังอยู่วันหนึ่ง java จะชนะการแข่งขัน
codegolf

1
หลังจากการแก้ไขของคุณคุณ outgolfed @MartinEnder ด้วยคำตอบ Retinaของเขาโดย 1 ไบต์! o.Ô
Kevin Cruijssen

1
@KevinCruijssen แต่ก็ยังไม่เพียงพอที่จะชนะหรืออย่างน้อยชนะ python :(
user902383

20

เป็นกลุ่ม 11

C<C-r>=<C-r>"<C-r>"*<C-r>"<cr>

crcrcrcrcr ...

C       change (delete and enter insert mode) until the end of the line
<C-r>=  insert an expression via the special "expression register"
<C-r>"  insert the contents of the default register (what we just C'd)
<C-r>"  ... again
*       multiplied by
<C-r>"  the input (again)
<cr>    insert the result of this expression

11 อะไร ไบต์?
บ้า

3
@Insane Bytes หากคุณเรียกใช้จากบรรทัดคำสั่งการกดแป้นหากคุณทำโดยตรงจาก vim ฉันมักจะละเว้นหน่วยจากคำตอบกลุ่มของฉันเพราะมันสามารถเป็นได้ทั้ง
Doorknob

v.tryitonline.net/#code=QxI9EiISIioSIgo&input=MTI ความไม่ดีไม่<C-r>สามารถพิมพ์ได้
DJMcMayhem

คือ<C-r>กลับสายการบิน?
กัปตันแมน

@CaptainMan ไม่<C-r>เป็นตัวควบคุมบวก r <cr>กลับสายการบินคือ
Doorknob

15

Pyth, 5 4 ไบต์

*s+`

คำอธิบาย:

    Q    input
   `     representation, basically str(Q)
  +  Q   add Q to its own string form
 s       parse int
*     Q  multiply by input
         print

ทดสอบได้ที่นี่


15

Emacs ขนาด 17 ไบต์

(*SPACEC-SPACEC-EM-YSPACEC-YC-Y)C-J

คำอธิบาย

  • (*SPACEเพิ่ม(*ที่จุด (ก่อนหมายเลข);
  • C-SPACEC-EM-Y เลือกและคัดลอกหมายเลข
  • SPACE เพิ่มอักขระช่องว่างที่จุด (หลังหมายเลข);
  • C-YC-Y วางสองเท่าของจำนวนที่จุด;
  • )เพิ่ม)ในตอนท้าย;
  • C-J ตีความบรรทัดเป็นนิพจน์ LISP และพิมพ์ผลลัพธ์

กันตัวอย่าง

เคอร์เซอร์ถูกแสดงโดยไพพ์ ( |)

  • |174
  • (*SPACE (* |174
  • C-SPACEC-EM-Y (* 174|
  • SPACE (* 174 |
  • C-YC-Y (* 174 174174|
  • ) (* 174 174174)|
  • C-J

ผลลัพธ์

(* 174 174174)
30306276|

3
สวัสดีและยินดีต้อนรับสู่ PPCG! โพสต์แรกที่ดี!
Rɪᴋᴇʀ

13

C #, 19 23 ไบต์

n=>int.Parse(""+n+n)*n;

ไม่มีสตริง 47 ไบต์

n=>{int i=1;while(i<=n)i*=10;return(i+1)*n*n;};

4
นี่เป็นตัวอย่างไม่ใช่โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ จะใช้ได้กับเช่น(n)=>{int.Parse(""+n+n)*n}2
cat

@cat ดีกว่าไหม ฉันจะต้องติดตาม;หรือไม่
weston


12

Python 2.7, 21 ไบต์:

lambda f:int(`f`*2)*f

นี่ต้องเป็นคำตอบที่สั้นที่สุดของ Python ที่ฉันเคยเขียนในเวลาที่สั้นที่สุด print()มันเป็นฟังก์ชั่นแลมบ์ดาที่ไม่ระบุชื่อที่สามารถดำเนินการโดยการตั้งชื่ออะไรที่มันที่คุณต้องการแล้วเรียกมันเหมือนการทำงานตามปกติในห่อ ตัวอย่างเช่นถ้าใส่ของคุณเป็น12และฟังก์ชั่นเป็นชื่อนี้นี้จะเรียกว่าเหมือนHprint(H(12))

ลองออนไลน์! (Ideone)

โปรดทราบว่านี่ใช้งานได้เฉพาะกับค่าที่สูงขึ้นและเท่ากัน9223372036854775807ตั้งแต่ค่าที่สูงกว่าใด ๆ และrepr()ใส่ a Lไว้ที่ส่วนท้ายของจำนวนเต็ม ดังนั้นสำหรับค่ามากกว่า9223372036854775807นี้24 ไบต์รุ่นจะเป็นหนึ่งที่ทำงาน:

lambda f:int(str(f)*2)*f

ลองใช้ออนไลน์! (Ideone)


ฉันยังพบการดำเนินงานของ Phytons String ที่มีมนต์ขลัง ...
Seims

@Seims ในทางใด?
busukxuan

การคูณสตริงและการเพิ่ม ไม่เห็นบ่อยครั้ง
Seims

@Seims ฉันคิดว่าคุณจะจัดการกับภาษาแบบคงที่แล้วหรือ
busukxuan

@busukxuan โทรหาฉันได้ถ้าคุณต้องการ: ^)
Seims

11

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

;DḌ×

ลองออนไลน์

คำอธิบาย

;DḌ×    Main link. argument : N

 D      Decimal; Yield the digits of N
;       Concatenate N and its digits
  Ḍ     Convert to integer; We get O
   ×    Multiply O and N

1
มันเป็นใบหน้าที่กระพริบอย่างมีความสุขจริงๆกับเคราแพะ! ;DDx
แมว

การเข้ารหัสใดใช้เวลาเพียง 1 ไบต์ โดยปกติเราใช้ UTF-8 ซึ่งใช้เวลา 3 (และ×ใช้เวลา 2 แต่เป็น 1 ไบต์เช่น ISO8859-1)
o11c

@ o11c Jelly ใช้หน้ารหัสที่กำหนดเองโดยที่อักขระเหล่านี้มีขนาดหนึ่งไบต์
สปาเก็ตตี้

10

C, 70 68 54 53 52 44

f(n){return(pow(10,(int)log10(n)+1)*n+n)*n;}

รุ่นก่อนหน้า (48 ไบต์ไม่มีฟังก์ชั่นคณิตศาสตร์) บันทึก 16 ไบต์ด้วย @LeakyNun, 1 ไบต์ขอบคุณ @FryAmTheEggman, 4 ไบต์ขอบคุณ @TobySpeight:

f(n,d,i){for(i=d=n;d;d/=10)i*=10;return(i+n)*n;}

การโทรf()ด้วยอาร์กิวเมนต์หนึ่งหมายเลขและส่งคืนหมายเลขที่ไม่เกี่ยวข้อง

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

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    while (*++argv) {
        int n = atoi(*argv);
        printf("%d -> %d\n", n, f(n));
    }
    return 0;
}

ผลการทดสอบ:

$ ./84712 1 2 3 4 10 174
1 -> 11
2 -> 44
3 -> 99
4 -> 176
10 -> 10100
174 -> 30306276

ลองออนไลน์!


f(n){int b=1;while(a)b*=10,a/=10;return(n+n*b)*n;}
Leun Nun

สิ่งนี้ไม่สามารถทำงานได้อย่างถูกต้องหากไม่รวมmath.hแต่คุณต้องอยู่ใน GCC ที่log10()และpow()ในตัวและคอมไพเลอร์ก็แค่เตือนเกี่ยวกับ "การประกาศโดยนัยที่เข้ากันไม่ได้ของฟังก์ชั่นในตัว" แทนที่จะถือว่า intพวกเขาทั้งสองกลับมา
Toby Speight

@Leaky - คุณไม่ได้ใส่อะไรลงไปa...
Toby Speight

1
เป็นเรื่องดีที่ได้เห็นคำตอบอื่นที่อยู่ในโลกของคณิตศาสตร์ (ไม่ใช่การต่อสตริง) :-)
Toby Speight

1
@Toby - การต่อข้อมูลสตริงใน C ไม่สอดคล้องกับการเล่นกอล์ฟ ;-)
owacoder

9

Dyalog APL ขนาด 7 ไบต์

⊢×#⍎⍕,⍕

การเป็นตัวแทนสตริง

⍕, การแทนค่าสตริงเสริม

#⍎ ทำให้เป็นตัวเลข (ในรูทเนมสเปซ)

⊢× คูณด้วยหมายเลขเดิม


1
นักสู้ TIE ที่ยับเยินนั้นเป็นคนตลก!
Luis Mendo


1
The fork awakens :-D
Luis Mendo

ฉันค่อนข้างมั่นใจว่ามันไม่ได้เป็นไบต์ในการเข้ารหัสใด ๆเนื่องจากมันไม่เหมือนตัวอักษรหรือเป็นเรื่องธรรมดา
o11c

@ o11c คุณตรวจสอบลิงก์สำหรับคำว่า "bytes" หรือไม่ meta.codegolf.stackexchange.com/a/9429/43319
อดัม

9

J, 7 ไบต์

*,~&.":

คำอธิบาย

*,~&.":  Input: n
     ":  Format n as a string
 ,~&.    Reflect and join the string to make "nn"
         and parse the string to get a number
*        Multiply that number by n

+1 ฉันไม่สามารถแม้แต่จะคิดว่าUnderมันทำงานอย่างถูกต้องกับการต่อสตริง เป็นการค้นพบที่ยอดเยี่ยมสำหรับฉัน! ขอขอบคุณ.
Dan Oak

น่าเศร้าที่ฉันคิดว่าสิ่งนี้ควรอยู่ในวงเล็บเนื่องจากเป็นตะขอที่ไม่ทำงานหากพิมพ์โดยตรง* ,~ &.": nและไม่สามารถใช้ในการสร้างคำกริยาอื่นได้
Dan Oak

1
@dahnoak ที่นี่ที่ PPCG เราจะต้องระบุสิ่งที่จำเป็นสำหรับฟังก์ชั่นเท่านั้นดังนั้นข้างต้นคือทั้งหมดที่จำเป็นในการสร้างฟังก์ชั่นใน J จากนั้นจะเรียกใช้โดยใช้อินพุตเป็นอาร์กิวเมนต์ก็จะอยู่ใน วงเล็บหรือเก็บไว้ในตัวแปร
ไมล์

อ่าฉันเข้าใจแล้ว
Dan Oak

9

เรติน่า27 27ไบต์

^
$_$*: $_
:
$_$*:
:

รับบิตช้าสำหรับอินพุตขนาดใหญ่เนื่องจากก่อนหน้าสเตจสุดท้ายผลลัพธ์จะถูกแสดงด้วย unary

ลองออนไลน์! (บรรทัดแรกเปิดใช้งานชุดทดสอบที่แยกบรรทัดด้วยฟีด)

คำอธิบาย

ฉันจะใช้2เป็นตัวอย่างการป้อนข้อมูล (เนื่องจากการเป็นตัวแทน unary ได้รับบิตเทอะทะสำหรับอินพุตขนาดใหญ่)

ด่าน 1: การเปลี่ยนตัว

^
$_$*: $_

โดยการจับคู่จุดเริ่มต้นของสตริงกับ^เราเพียงแค่เติมบางสิ่ง $_อ้างถึงสตริงอินพุตของตัวเองและ$*:หมายความว่าเราแทรกโคลอนจำนวนมาก ดังนั้นเราจึงได้รับ:

:: 22

ด่าน 2: การเปลี่ยนตัว

:
$_$*:

ตอนนี้เราให้ตรงกับทุกครั้งและอีกครั้งแทนที่ด้วย: $_$*:แน่นอนว่าเวลานี้$_ไม่ได้ประเมินเป็นจำนวนเต็ม (แต่เป็น:: 22ตัวอย่างของเรา) แต่$*เพียงแค่มองหาทศนิยมแรกในสตริงดังนั้นสิ่งนี้จะประเมินการป้อนข้อมูลที่เชื่อมต่อกับตัวเอง ( Oในสเปคความท้าทาย) เราจะจบลงด้วยN*Ocolons ตามด้วยO:

:::::::::::::::::::::::::::::::::::::::::::: 22

ด่าน 3: การแข่งขัน

:

สิ่งที่เหลืออยู่คือการนับ:s เพื่อแปลงจาก unary กลับเป็นทศนิยมซึ่งเป็นขั้นตอนนี้


Ooh อยู่ใกล้กับตราบใดที่ Java มากกว่าแค่ 2 ไบต์เท่านั้น +1
R. Kap

@ R.Kap ที่จริงแล้ว Java 8 outgolfed หลังจากลบ 3 ไบต์! o.Ô
Kevin Cruijssen

4
ขออภัย Java ....
Martin Ender

9

CJam , 8 ไบต์

ri_`_+i*

ลองออนไลน์!

r     e# Read input
i     e# Convert to integer
_     e# Duplicate
`     e# Convert to string
_     e# Duplicate
+     e# Concatenate
i     e# Convert to integer
*     e# Multiply. Implicitly display

2
ฉันกำลังจะแนะนำไม่ให้แปลงเป็นกลับทันทีสตริง แต่วิธีการไร้เดียงสา (เช่นไม่เคยใช้ CJam ก่อน) คือr__+i\i*ซึ่งมีความยาวเดียวกัน
Nic Hartley

@QPaysTaxes อ่าดี ฉันสังเกตเห็นสิ่งเดียวกันกับคุณ: ทำไมแปลงเป็น int ก่อนแล้วจึงกลับไปที่สตริงอีกครั้ง ฉันไม่เคยใช้ CJam และไม่ได้มองใกล้ ๆ กับผู้ให้บริการที่เป็นไปได้ทั้งหมดดังนั้นฉันจึงไม่สามารถหาวิธีแก้ปัญหาได้ในครั้งแรก ขอบคุณที่แบ่งปันวิธีการของคุณโดยไม่แปลงกลับเป็นสตริงแม้ว่าจะมีความยาวไบต์เดียวกัน
Kevin Cruijssen

ถ้ามีวิธีที่จะใช้ดำเนินการเพื่อทั้งกองในสองไบต์มันจะไบต์สั้น (บางอย่างเช่นr__+si*ที่sเป็น "ใช้การดำเนินการนี้กว่าสแต็ค") แต่ผมไม่เห็นอะไรเช่นนั้น
Nic Hartley

8

เยลลี่, 8 6 ไบต์

ŒṘẋ2v×

ลองออนไลน์!

คำอธิบาย

ŒṘẋ2v× - Main link. Left argument: the number to convert

     × - Multiply
    v  - an evaluation of the left argument
ŒṘ     - converted to string
  ẋ    - multiplied by
   2   - two and the left argument

1
ผมไม่คิดว่าคุณต้องอย่างใดอย่างหนึ่งของผู้ที่³s
Martin Ender




7

Matlab / Octave ขนาด 20 ไบต์

@(x)eval([x x 42 x])

นี่คือฟังก์ชั่นที่ไม่ระบุชื่อที่รับอินพุตเป็นสตริง

ตัวอย่างการใช้:

>> f = @(x)eval([x x 42 x])
f = 
    @(x)eval([x,x,42,x])
>> f('12')
ans =
       14544

หรือลองออนไลน์กับ ideone

คำอธิบาย

รหัสสร้างสตริงโดยเชื่อมโยงสตริงอินพุตสองครั้งจากนั้นอักขระ*(ที่มีรหัส ASCII 42) จากนั้นสตริงอีกครั้ง สตริงที่ต่อกันจะถูกประเมินค่า


อะไร42หมายถึง?
Leun Nun

4
@LeakyNun มันเป็นคำตอบสำหรับคำถามสุดท้ายของชีวิตจักรวาลและทุกอย่าง "นอกจากนี้ยังเป็นรหัส ASCII สำหรับ*
Luis Mendo

อา ฉันกำลังค้นหาบางอย่างเช่นฟังก์ชั่นที่ 42
Leun Nun

รหัสเพียงแค่สร้างสตริงโดยเชื่อมสตริงที่ป้อนเข้าสองครั้งจาก*นั้นจึงสร้างสตริงอีกครั้ง สตริงที่ต่อกันจะถูกประเมินค่า ฉันจะแก้ไขให้เป็นคำตอบ
Luis Mendo


6

zsh, 13 ไบต์

<<<$[$1$1*$1]

รับอินพุตเป็นอาร์กิวเมนต์บรรทัดรับคำสั่งเอาต์พุตไปยัง STDOUT

ใช้งานได้เฉพาะใน zsh แต่นี่คือ15 ไบต์ใน Bashโดยใช้echoแทน<<<:

echo $[$1$1*$1]

6

Perl, 11 ไบต์

$_*=$_ x2

+ the pและlค่าสถานะ

(วิ่งด้วยperl -ple '$_*=$_ x2')

-2 ไบต์ขอบคุณไปป์


บันทึกสองไบต์:$_*=$_ x2
pipe

ฉันไม่คิดว่าคุณต้องการ-l
Brad Gilbert b2gills

@ BradGilbertb2gills ใช่ฉันต้องการเพราะไม่มีมัน$_ x2จะผลิต...\n...\nซึ่งเมื่อแปลงเป็นตัวเลขโดย perl สิ้นสุดในครั้งแรก\n
Dada

ผมได้ทดสอบกับทั้ง Perl 5 และ 6 6และไม่ได้แจ้งให้ทราบว่าฉันลืมที่จะเอา
แบรดกิลเบิร์ต b2gills

6

Excel VBA ขนาด 35 ไบต์

ตำบลที่ถูกเรียกด้วยหมายเลข msgbox จะส่งคืนคำตอบ

Sub B(a)
MsgBox (a & a) * a
End Sub

Excel VBA สำรองขนาด 42 ไบต์

จำนวนที่กำหนดในสูตรส่งคืนคำตอบ

Function B(a)
B = (a & a) * a
End Function

คิดเกี่ยวกับ MsgBox และย่อย มันจะช่วยให้คุณประหยัด 13 Byte ถ้าฉันนับอย่างถูกต้อง
GER_Moki

ฉันต้องการรูปแบบของกล่องป้อนข้อมูลเพื่อรับค่าใช่ไหม?
tjb1

ลอง Sub B (a) MsgBox (a & a) * a End Sub
GER_Moki

ต้องมีย่อยอีกอันเพื่อส่งผ่านค่าฉันไม่แน่ใจว่าได้รับอนุญาตให้เล่นกอล์ฟ
tjb1

ต้องเรียกใช้ฟังก์ชันด้วยเช่นกัน)
GER_Moki

6

Lua ขนาด 20 ไบต์

รับอาร์กิวเมนต์บรรทัดคำสั่งและส่งออกผ่าน STDOUT

a=...print((a..a)*a)

และ ungolfed ตามที่ @LeakyNun ถามในความคิดเห็น :)

a=...       -- alias for the first argument
print(
     (a..a) -- concatenate a with itself, equivalent to a:rep(2)
     *a)    -- multiply the resulting number by a

นั่นอาจเป็นการสาธิตที่ดีของการบีบบังคับประเภท ... หากคุณเพิ่มคำอธิบายลงไป
Leaky Nun


5

PHP, 25 24 ไบต์

แท็กเปิดสั้น ๆ มีประโยชน์สำหรับความท้าทายในการเล่นกอล์ฟที่น่าแปลกใจโชคดีที่นี่เป็นหนึ่งในนั้น น่าเสียดายที่ตัวดำเนินการอยู่ตรงข้ามกับลำดับที่คุณต้องทำในวงเล็บจึงจำเป็นต้องใช้จำนวนมาก

<?=($a=$argv[1])*"$a$a";

แก้ไข: ฉันรู้ว่าการเห็นว่าฉันใช้วงเล็บอย่างไรฉันสามารถข้ามตัวดำเนินการเรียงต่อกันได้อย่างมีประสิทธิภาพโดยการเปลี่ยนลำดับการดำเนินการเป็นลายลักษณ์อักษร


5

dc, 11 10 ไบต์

ddZAr^1+**

ฉันรู้ว่าในที่สุดฉันก็จะพบการใช้Zคำสั่ง!

การดำเนินการค่อนข้างง่าย - นับตัวเลขใช้เวลา 10 ยกกำลังนั้นและเพิ่มหนึ่ง นี่จะให้ตัวคูณที่เชื่อมโยงตัวเลขกับตัวมันเอง จากนั้นก็คูณ

I / O ใช้สแต็กตามปกติสำหรับ dc

โปรแกรมเต็มรูปแบบ

นี่คือสิ่งที่ฉันใช้สำหรับการทดสอบ:

#!/usr/bin/dc
?
ddZAr^1+**
p

คำสั่งพิเศษสองคำสั่งทำให้เรามี I / O

การทดสอบ

$ for i in 1 2 3 10 174; do printf '%d -> ' $i; ./84712.dc <<<$i; done
1 -> 11
2 -> 44
3 -> 99
10 -> 10100
174 -> 30306276

ขอบคุณเนื่องจาก Sir Biden XVII (1 ไบต์)


คุณสามารถใช้แทนAสำหรับ10การบันทึกไบต์ ทำได้ดี!
Joe

4

คางทูม 11 ไบต์

R I W I_I*I

นี่เป็นหนึ่งในความท้าทายของกอล์ฟที่หายากที่นิสัยแปลก ๆ ของคางทูมนั้นมีประโยชน์มาก ประการแรกตัวแปรทั้งหมดเป็นสตริงและสมการทางคณิตศาสตร์ทั้งหมดได้รับการประเมินจากซ้ายไปขวาอย่างเคร่งครัด (ดังใน: ไม่ใช่ PEMDAS) ดังนั้น 1 + 2 * 4 = 12 ในคางทูมแทนที่จะเป็น = 9 วิธีที่ PEMDAS จะทำ ดังนั้น ungolfed (เพิ่ง):

R I ;     Read from stdin to variable I
W I_I*I ; Write out I concatenated with I, then multiplied by I.

คำเตือน - เนื่องจากรสชาติของคางทูมที่ฉันกำลังใช้ (InterSystems Ensemble) ไม่ได้สะท้อน echo carriage return สำหรับ stdin จำนวนอินพุตและเอาต์พุตจะปรากฏขึ้นพร้อมกัน หากต้องการแก้ไข / เพิ่มความสามารถในการอ่านคุณจะต้องเพิ่มสองไบต์และเพิ่ม CR / LF ด้วยตนเองดังนี้:

R I W !,I_I*I

อย่างไรก็ตามเนื่องจากฉันไม่เห็นความต้องการนั้นในกฎของความท้าทายฉันค่อนข้างแน่ใจว่าฉันดีกับรหัสที่สั้นกว่า หากฉันเข้าใจผิดโปรดอย่าลังเลที่จะ LART ฉันและฉันจะแก้ไขคำตอบของฉัน :-)


4

PowerShell, 25 , 18 ไบต์

ขอบคุณ TessellatingHeckler สำหรับการเตือนฉันว่า PS รักไปป์ไลน์มากแค่ไหน

ใหม่ 18 ไบต์:

process{$_*"$_$_"}

เก่า 25 ไบต์:

param($a);[int]"$a$a"*$a

คำอธิบาย:

# new
process{$_*"$_$_"}
process{         } # runs code block once for each passed item
        $_*        # multiple the first parameter
           "$_$_"  # concatenate as a string for ease
                   # in this case, the order does the typecasting for us
# old
param($a);[int]"$a$a"*$a
param($a)                 # assigns the first passed parameter to variable $a
         ;                # line terminator
          [int]           # type cast string "$a$a" to int32
               "$a$a"     # convert $a$a to string for easy concatenation
                     *$a  # multiply by $a

การทดสอบ (บันทึกเป็นที่น่าเบื่อ. ps1):

# new
12 | .\boring.ps1
14544
174 | .\boring.ps1
30306276

# old
.\boring.ps1 12
14544
.\boring.ps1 174
30306276

ไม่ใช่คำตอบที่ชนะแน่นอน แต่สนุกโดยไม่คำนึงถึง!


หากคุณวางตัวแปรในลักษณะอื่นสตริง int * จะส่งสตริงไปยัง int โดยปริยายและคุณสามารถบันทึกการหล่อได้ 5 ไบต์ process{$_*"$_$_"}คือ 18 ไบต์และรับอินพุตจาก "stdin" (เช่นไปป์ไลน์) เช่น174|script.ps1
TessellatingHeckler

อืม ... จุดที่น่าสนใจ ฉันยังสามารถเปลี่ยนพวกเขาโดยใช้โครงสร้างเดียวกันของฉันและบรรลุผลเดียวกัน:param($a);$a*"$a$a"
ThePoShWolf

เอ่อฉันจะเอามันกลับมาฉันเป็นอีกหนึ่งไบต์!
ThePoShWolf

@TessellatingHeckler ระมัดระวังกับคำตอบว่าตั้งแต่สภาพแวดล้อม REPL PowerShell ไม่ได้มีคุณสมบัติสำหรับโปรแกรมหรือฟังก์ชั่น เริ่มต้น บางสิ่งที่เหมือนparam($n)$n*"$n$n"(สิ่งที่ Darth ไม่มี;) ไม่มีความยาวเท่ากันและไม่ใช่ REPL
AdmBorkBork

@ TimmyD เหตุใดtest.ps1ไฟล์ที่อ่านจากการนับไพพ์ไม่ได้ เชลล์สคริปต์ bash ที่อ่านจาก stdin จะไม่นับรวมหรือไม่?
TessellatingHeckler

4

แบตช์, 27 20 18 ไบต์

@cmd/cset/a%1%1*%1

แก้ไข: บันทึกแล้ว 7 ไบต์ด้วย @TessellatingHeckler บันทึกอีก 2 ไบต์ต้องขอบคุณ @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ


set /aที่พรอมต์ออกผลลัพธ์ของการกำหนด -> @cmd/c set/a n=%1%1*%1สำหรับ 22 ไบต์
TessellatingHeckler

@TessellatingHeckler ทำไมต้องกำหนดถ้าคุณกำลังส่งออก
Neil

@TessellatingHeckler Huh ฉันทำเคล็ดลับนี้ไปแล้วเมื่อหกสัปดาห์ที่แล้วและฉันลืมไปแล้ว ..
Neil

@cmd/cset/a%1%1*%1สำหรับวันที่ 18
Erik the Outgolfer

1
@Neil Nope แต่ฉันทดสอบ (ใน Windows 10!) cmd/cจำเป็นต้องมีส่วนเพราะเครื่องมือการเรียกใช้แบตช์ไฟล์ไม่ใช่ cmdตัวของมันเอง
Erik the Outgolfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.