แสดงตัวคูณร่วมน้อย


50

รับจำนวนเต็มบวกสองตัว A และ B แสดงให้เห็นถึงผลคูณที่น้อยที่สุดของพวกมันโดยแสดงเครื่องหมายขีดคั่นสองบรรทัด ( -) ด้วยความยาวLCM (A, B) หลังจากเปลี่ยนทุกเส้นประ Ath ในบรรทัดแรกและเส้นประ Bth ทุกเส้นในบรรทัดที่สองด้วยแถบแนวตั้ง ( |)

ด้วยวิธีนี้จุดสิ้นสุดของแต่ละบรรทัดจะเป็นเส้นที่สอง|เท่านั้น

ตัวอย่างเช่นถ้า A = 6 และ B = 4, LCM (6, 4) = 12 ดังนั้น:

two lines of 12 dashes:
------------
------------

replace every 6th dash in the first line with a vertical bar:
-----|-----|
------------

replace every 4th dash in the second line with a vertical bar:
-----|-----|
---|---|---|

ดังนั้นผลลัพธ์สุดท้ายจะเป็น

-----|-----|
---|---|---|

ลำดับของหมายเลขอินพุตควรสอดคล้องกับลำดับของบรรทัด

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

Testcases

A B
line for A
line for B

1 1
|
|

1 2
||
-|

2 1
-|
||

2 2
-|
-|

6 4
-----|-----|
---|---|---|

4 6
---|---|---|
-----|-----|

2 3
-|-|-|
--|--|

3 2
--|--|
-|-|-|

3 6
--|--|
-----|

2 5
-|-|-|-|-|
----|----|

4 3
---|---|---|
--|--|--|--|

10 10
---------|
---------|

10 5
---------|
----|----|

10 6
---------|---------|---------|
-----|-----|-----|-----|-----|

24 8
-----------------------|
-------|-------|-------|

7 8
------|------|------|------|------|------|------|------|
-------|-------|-------|-------|-------|-------|-------|

6 8
-----|-----|-----|-----|
-------|-------|-------|

13 11
------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|

3
@LeakyNun การขยายคำตอบจากcodegolf.stackexchange.com/q/94999ดูเหมือนง่ายกว่านั้น ไม่ว่าจะด้วยวิธีใดผู้คนจะสนุกไปกับการทำสิ่งนี้ซึ่งเป็นเหตุผลที่เหมาะสม
งานอดิเรกของ Calvin

1
ฉันสามารถส่งออกอาร์เรย์ด้วยสองสายหนึ่งรายการสำหรับแต่ละบรรทัดได้หรือไม่
BlackCap

@BlackCap ไม่พิมพ์สตริงเพื่อ stdout หรือไฟล์หรือส่งคืนสตริงหลายบรรทัดทั้งหมด
งานอดิเรกของ Calvin

2
โบนัสสำหรับการจัดการจำนวนอินพุตโดยพลการหรือไม่
Adám

1
@HelkaHomba ตกลงขอบคุณ; บันทึกอีก 1 ไบต์ :) (ราวกับว่ามีเหตุผลอื่นที่จะถามคำถามเกี่ยวกับการท้าทาย codegolf; p)
Kevin Cruijssen

คำตอบ:


11

Python 3, 80 ไบต์

บันทึก 1 ไบต์ขอบคุณ Halvard Hummel และ 1 ไบต์ขอบคุณ Jonathan Allan

import math
def f(*l):
 for k in 0,1:print(l[~k]//math.gcd(*l)*(~-l[k]*"-"+"|"))

ทดสอบออนไลน์!

lambda*l:"\n".join(l[0]*l[1]//math.gcd(*l)//k*(~-k*"-"+"|")for k in l)
import math

ทดสอบออนไลน์! (82 ไบต์ - คำตอบเริ่มต้น)

นี่คือสิ่งที่ดีที่สุดที่ฉันสามารถทำได้ใน Python 2 (81 ไบต์) ดูเหมือนว่าฉันไม่สามารถแสดงความคิดเห็นกับคำตอบนั้นฉันจะโพสต์ที่นี่แทน:

from fractions import*
l=a,b=input()
for k in l:print a*b/gcd(*l)/k*(~-k*"-"+"|")

ทดสอบออนไลน์!

ความพยายามครั้งแรกที่นี่อาจย่อยที่ดีที่สุด!


2
ยินดีต้อนรับสู่ PPCG!
Laikoni

3
@Laikoni ขอขอบคุณ! ดูเหมือนว่าชุมชนที่สนุกสนาน :-)


@ HalvardHummel ขอบคุณจะโพสต์เป็นทางเลือก!

ขณะที่พยายามวิธีการที่แตกต่างกันสิ้นเชิงฉันตระหนักรุ่นของคุณสามารถทำได้ใน 80
Jonathan Allan

10

Haskell , 57 ไบต์

x%y=unlines[["-|"!!(0^mod a b)|a<-[1..lcm x y]]|b<-[x,y]]

ลองออนไลน์!


ฉันไม่เคยเห็น0^0=1เคล็ดลับนั้นมาก่อน - ฉลาด
BlackCap

@ BlackCap ฉันไม่สามารถเรียกร้องได้ด้วยตัวเองเพราะฉันเคยเห็นมันมาสองสามครั้งก่อนหน้า แต่ฉันจำไม่ได้ว่าฉันเห็นกลอุบายครั้งแรกที่ใด
Laikoni


6

MATL , 16 15 ไบต์

'-|'!i&Zm:G\go)

อินพุตเป็นเวกเตอร์คอลัมน์ที่มีตัวเลขสองตัว ลองออนไลน์!

เป็นโบนัสอินพุตสามารถมีตัวเลขได้มากกว่าสองตัว ลองออนไลน์!

คำอธิบาย

'-|'   % Push this string
!      % Transpose. This is needed because of input [1; 1]
i      % Input column vector of 2 (or N) numbers
&Zm    % LCM of the 2 (or N) numbers, say L
:      % Range
G      % Push input again
\      % Modulus, element-wise with broadcast. Gives a 2×L (or N×L) matrix
g      % Convert to logical: gives false for zeros, true for nonzeros
o      % Convert to double: gives 0 for false, 1 for true
)      % Index into string (modular, 1-based). Implicitly display

ฉันคิดว่าคุณหลงทางอยู่Heหรือเปล่า?
Sanchises

@Sanchises ขอบคุณ! ใช่เป็นรุ่นก่อนหน้า แต่ไม่จำเป็น
หลุยส์เมนโด

นอกจากนี้ดูเหมือนว่าจะทำงานได้ดีโดยไม่ต้องเปลี่ยนใจ? คุณคิดมากกับเรื่องต่าง ๆ ... ;)
Sanchises

@Sanchises หากไม่มีทรานสโพสมันไม่ทำงานสำหรับอินพุต[1; 1]เนื่องจาก MATL (AB) จัดการกับรูปร่างของอาร์เรย์ด้วยการจัดทำดัชนี (หรือมิฉะนั้นทรานเมียร์สามารถถูกแทนที่ได้Heในตอนท้ายซึ่งเป็นเหตุผลว่าทำไมมันถึงอยู่ที่นั่นตอนแรก)
Luis Mendo

อ่าใช่ฉันคิดว่ามันอยู่ที่นั่นเพราะพฤติกรรมแถว แต่ฉันไม่ได้คิดถึงกรณีขอบนี้
Sanchises

5

R , 109 105 ไบต์

function(a,b){q=1:a*b
l=min(q[!q%%a])
x=rep("-",l*2)
x[c(seq(0,l,a),l+seq(0,l,b))]="|"
write(x,"",l,,"")}

ลองออนไลน์!

ฟังก์ชั่นไม่ระบุชื่อ คำนวณl=lcm(a,b)จากนั้นสร้างช่วงจาก0ไปlตามaจากจากlไป2*lตามbตั้งค่าดัชนี|และพิมพ์เป็นเมทริกซ์ที่มีlคอลัมน์




4

Huskขนาด 12 ไบต์

†?'-'|TUṪ`%N

ลองออนไลน์!

ใช่มี lcm ในตัวอยู่ใน Husk ไม่ฉันไม่ต้องการมัน

โบนัส: ทำงานได้กับค่าอินพุตจำนวนเท่าใดก็ได้

คำอธิบาย

†?'-'|TUṪ`%N    input:[2,3]
        Ṫ`%N    table of all remainders of positive naturals divided by
                input numbers:
                             [[1,1],[0,2],[1,0],[0,1],[1,2],[0,0],[1,1],[0,2],...
       U        get all elements before the first repeated one:
                             [[1,1],[0,2],[1,0],[0,1],[1,2],[0,0]]
      T         transpose:   
                             [[1,0,1,0,1,0],[1,2,0,1,2,0]]
†?'-'|          replace all truthy elements with '-' and all falsy elements
                with '|': 
                             ["-|-|-|","--|--|"]
                implicit: since this is a full program, join the resulting array
                of strings with newlines, and print to stdout

4

Mathematica, 63 ไบต์

(s=LCM@##;Print[""<>If[i~Mod~#<1,"|","-"]~Table~{i,s}]&/@{##})&

ลองออนไลน์!

และอีกเวอร์ชั่นที่ user202729 จริงๆต้องการเห็นโพสต์จริงๆ

Mathematica, 59 ไบต์

(s=LCM@##;Print[""<>If[#∣i,"|","-"]~Table~{i,s}]&/@{##})&  

อันนี้ใช้อักขระพิเศษ \[Divides]


หากนี่คือ Mathematica คุณสามารถใช้\[Divides]แทนModโอเปอเรเตอร์เพื่อแทนค่าความหารได้ซึ่งจะบันทึกได้ 4 ไบต์ นอกจากนี้ยัง Mathics TIO {Null, Null}ไม่ควรพิมพ์
user202729

@ user202729 ฉันคงพิมพ์ Mathics
J42161217

3
ฉันคิดว่าความคิดเห็นแรกของคุณชัดเจนเพียงพอ โปรดหยุดกดฉันเพื่อทำการเปลี่ยนแปลงตามที่คุณต้องการเวลาที่แน่นอน ให้เวลาผู้ใช้ในการตอบกลับ พวกเราบางคนมีชีวิตที่นี่
J42161217


3

APL (Dyalog) 22 ไบต์

⎕IO←0ถือว่า รับ A, B เป็นอาร์กิวเมนต์ที่ถูกต้อง โบนัส:จัดการรายการอินพุตที่มีความยาวเท่าใดก็ได้!

{'|-'[⌽×⍵∘.|⍳∧/⍵]}

ลองออนไลน์!

{} แลมบ์ดานิรนามซึ่งแสดงถึงการโต้แย้งที่ถูกต้อง

'|-'[... ทำ] ดัชนีสตริงด้วย:

  ∧/ LCM ข้ามอินพุต

   ครั้งแรกที่หลายɩ ntegers (0 ผ่าน N-1)

  ⍵∘.| ส่วนที่เหลือของตารางที่มีการป้อนข้อมูลในแนวตั้งและแนวนอน

  × Signum

   พลิกแนวนอน


สมมติฐานแรกนั้นหมายความว่าอย่างไร
งานอดิเรกของ Calvin

@HelkaHomba หมายความว่าดัชนีอาร์เรย์เริ่มต้นที่ 0 ซึ่งเป็นค่าเริ่มต้นสำหรับล่าม APL ฉันเชื่อว่า
Conor O'Brien

@HelkaHomba เนื่องจากระบบ APL มีทั้งแบบที่มีพื้นฐานเป็น 0 และแบบที่ 1 ที่มีรสชาติฉันแค่เขียนสมมติฐาน มิฉะนั้นจะต้องมีสอง APL เช่นngn / apl สามารถเรียกใช้รหัสเดียวกันนี้ได้โดยไม่ต้องระบุ⎕IO←0เนื่องจากเป็นค่าเริ่มต้นที่นั่น
อดัม


3

JavaScript (ES6), 69 ไบต์

f=(a,b,S,A=1)=>(A%a?'-':'|')+(A%a|A%b?f(a,b,S,A+1):S?'':`
`+f(b,a,1))

ซ้ำจะดำเนินไปจนถึงAหารทั้งสองข้างaและb- การแสดงผลประหรือท่อขึ้นอยู่กับa's Aหารโดย

ฟังก์ชั่นแล้วเรียกตัวเอง, การแลกเปลี่ยนและab

Sตัวแปรป้องกันไม่ให้การทำงานจากที่เรียกตัวเองเพียบ

กรณีทดสอบ:


คำตอบก่อนหน้า:

JavaScript (ES8), 91 ไบต์

f=(a,b,i=2,g=(c,d)=>d?g(d,c%d):c)=>i?'|'.padStart(a,'-').repeat(b/g(a,b))+`
`+f(b,a,i-1):''

ใช้อัลกอริทึม:

lcm(a, b) = ab / gcd(a, b)
gcd(c, d) = d ? gcd(d, c%d) : c

เรียกซ้ำตัวเองเพียงครั้งเดียวเพื่อส่งออกบรรทัดที่สอง

กรณีทดสอบ:

JavaScript (ES6), 93 ไบต์

f=(a,b,i=2,g=(c,d)=>!d=>d?c:g(d,c%d):c)=>i?('-'.repeat(a-1)+'|').repeat(a*bb/g(a,b)/a)+`
`+f(b,a,i-1):''

ขั้นตอนวิธีการเช่นเดียวกับก่อนใช้แทนrepeatpadStart


1
ฉันคิดว่าpadStartES8 คืออะไร?
Neil

1
f=(a,b,A=1)=>(A%a?'-':'|')+(A%a|A%b?f(a,b,A+1):a<0?'':`\n`+f(-b,a))
l4m2

@ l4m2 ฉันแทบจะไม่สามารถเข้าใจโค้ดที่ฉันเขียนเมื่อปีที่แล้ว แต่ดูเหมือนว่าคุณจะสามารถลบไบท์ได้บ้างขอบคุณ!
Rick Hitchcock

3

สกาลา 98 ไบต์

print((a to a*b).find(l=>l%a+l%b==0).map(l=>("-"*(a-1)+"|")*(l/a)+"\n"+("-"*(b-1)+"|")*(l/b)).get)

ลองออนไลน์


สวัสดียินดีต้อนรับสู่ PPCG! ดูเหมือนว่าเป็นคำตอบแรกที่ดีดังนั้น +1 จากฉัน ฉันไม่แน่ใจเพราะฉันไม่เคยเขียนโปรแกรมใน Scala แต่สามารถตี*(a-1)กอล์ฟไป*~-aและ*(b-1)ไปได้*~-bหรือไม่ นอกจากนี้คุณสามารถเพิ่มลิงค์ TIOด้วยรหัสทดสอบได้หรือไม่ (โอ้และอวตารนั้นดูเหมือนจะไม่เป็นลูกบาศก์สำหรับฉัน; p)
Kevin Cruijssen

2
ขอบคุณ! เคล็ดลับกับ*~-aดีมาก แต่น่าเสียดายที่สกาล่าต้องวงเล็บเพิ่มเติมได้ที่: *(~(-a))ที่จะทำให้ชัดเจนว่า concatenations *~-, *~, ~-ไม่ได้ชื่อฟังก์ชันแฟนซี ฉันเพิ่มลิงค์ TIO
ผักกาดหอมลูกบาศก์

อาใช่~-ได้ชื่อฟังก์ชันใน Scala ฉันจำได้ว่ามีคนพูดถึงเรื่องนี้เมื่อไม่นานมานี้ นั่นเป็นเรื่องโชคร้ายสำหรับการเล่นกอล์ฟ ยินดีต้อนรับอีกครั้งและคำตอบแรกที่ดี
Kevin Cruijssen


3

Java 8, 125 118 117 ไบต์

a->b->{String A="\n",B=A,t="|";for(int i=1;!A.endsWith(t)|!B.endsWith(t);B+=i++%b<1?t:"-")A+=i%a<1?t:"-";return A+B;}

-7 ไบต์ขอบคุณที่@Nevay
-1 ไบต์โดยเริ่มต้นด้วยการขึ้นบรรทัดใหม่ ( A="",B="\n"แทนที่ด้วยA="\n",B=A)

คำอธิบาย:

ลองที่นี่

a->b->{             // Method with two integer parameters and String return-type
  String A="\n",    //  String top line (starting with a trailing new-line)
         B=A,       //  String bottom-line (starting with a new-line)
         t="|";     //  Temp String "|" which is used multiple times
  for(int i=1;      //  Index-integer, starting at 1
      !A.endsWith(t)|!B.endsWith(t);
                    //  Loop as long as both Strings aren't ending with "|"
      B+=           //    After every iteration: append `B` with:
         i++%b<1?   //     If `i` is divisible by `b`:
                    //     (and increase `i` by 1 in the process)
          t         //      `t` (holding "|")
         :          //     Else:
          "-")      //      A literal "-"
    A+=             //   Append `A` with:
       i%a<1?       //    If `i` is divisible by `a`
        t           //     `t` (holding "|")
       :            //    Else:
        "-";        //     A literal "-"
                    //  End of loop (implicit / single-line body)
  return A+B;       //  Return both lines, separated by the new-line `B` started with
}                   // End of method

1
118 ไบต์:a->b->{String A="",B="\n",k="|";for(int i=0;!A.endsWith(k)|!B.endsWith(k);B+=i%b<1?k:"-")A+=++i%a<1?k:"-";return A+B;}
2560

@Nevay ขอบคุณ ไม่อยากจะเชื่อเลยว่าฉันพลาดสิ่งที่เห็นได้ชัดที่สุด!A.endsWith(t)|!B.endsWith(t)เมื่อฉันกำลังมองหาวิธีสั้น ๆ เพื่อตรวจสอบว่าทั้งคู่ลงท้ายด้วย|.. และการเริ่มต้น B กับบรรทัดใหม่แทนที่จะใส่ระหว่างพวกเขาที่กลับมาก็ฉลาดเช่นกัน
Kevin Cruijssen

2

Python 2 , 96 88 ไบต์

แก้ไข:บันทึกแล้ว 4 ไบต์ด้วย@Leaky Nun

แก้ไข:บันทึกแล้ว 4 ไบต์ขอบคุณ@Rod

lambda a,b:b/gcd(a,b)*("-"*~-a+"|")+"\n"+a/gcd(a,b)*("-"*~-b+"|")
from fractions import*

ลองออนไลน์!


88 ไบต์หรือ 77 ไบต์สำหรับเอาต์พุตที่ยืดหยุ่นมากขึ้น
Rod


1
เห็นได้ชัดว่าการส่งออกรายการสตริงไม่เป็นที่ยอมรับ : ฉันแทนที่[...]ด้วย'\n'.join(...)เพื่อแก้ไข
สิ้นเชิงมนุษย์

2

Python 2 , 89 ไบต์

ไม่ใช่รายการ Python 2 ที่สั้นที่สุด แต่เป็นวิธีที่แตกต่างจาก gcd ที่อาจยังสามารถเล่นกอล์ฟได้

a,b=input()
h,p='-|'
x=b*(h*~-a+p),a*(h*~-b+p)
for v in x:print v[~zip(*x).index((p,p)):]

ลองออนไลน์!


2

Haskell , 66 60 ไบต์

a#b=do x<-[a,b];lcm a b`take`cycle(([2..x]>>"-")++"|")++"\n"

ลองออนไลน์!


ความยาวเท่ากัน:

a#b=unlines[take(lcm a b)$cycle$([2..x]>>"-")++"|"|x<-[a,b]]

โซลูชันเก่า:

l!x=[1..div l x]>>([2..x]>>"-")++"|"
a#b|l<-lcm a b=l!a++'\n':l!b

1
'\n':คุณสามารถบันทึกไบต์ด้วย
Laikoni

@Laikoni ระวังฉันกำลังเข้าใกล้คุณ
BlackCap



1

SOGL V0.12 , 19 16 ไบต์

2{H┌*┐+..*..g/mP

ลองที่นี่!

คำอธิบาย:

2{                two times do
  H                 decreate ToS - input - by 1
   ┌*               get that many dashes
     ┐+             append a vertical bar
       ..*          push both inputs multiplied           \
          ..g       push gcd(input1, input2)              | LCM - 7 bytes :/
             /      divide the multiblication by the GCD  /
              m     mold the string to that length
               P    print that in a new line

คุณบันทึกไว้ก่อนที่จะนำไปใช้? o0
มนุษย์ทั้งหมด

1
@icrieverytim SOGL มีหลายสิ่งหลายอย่างที่ไม่ได้ใช้งาน : p เอกสารเป็นพื้นรายการสิ่งที่ต้องทำของฉัน (ซึ่งฉันไม่ค่อยได้ทำ: p)
dzaima

1

ซ้อนกัน , 42 38 ไบต์

[:...lcm@z:[:z\/\#-'-'*\rep'|'+out]"!]

ลองออนไลน์!

ป้อนข้อมูลในรูปแบบของตัวเลข กรณีทดสอบทั้งหมดรวมกันดูเหมือนจะเป็นอาคาร

คำอธิบาย

ครั้งแรกนี้จะใช้เวลาของตัวเลขสองใส่ลงในlcm zจากนั้นสำหรับแต่ละตัวเลขkเราจะสร้างz / kสตริง-ของความยาวk - 1เพิ่ม|ที่ส่วนท้ายของแต่ละและส่งออกแต่ละ

ความพยายามนับครั้งก่อนหน้า

42 ไบต์: [:...lcm@z:[:z\/\#-'-'*\rep'|'+''#`out]"!]

ความพยายามอื่น ๆ

43 ไบต์: [:...lcm@z:[:z\/\#-'-'*\rep'|'#`'|'+out]"!]

45 ไบต์: ['@lcm'!#~@z,[:z\/\#-'-'*\rep'|'#`'|'+out]"!]

45 ไบต์: [:...lcm@x[x'-'*\#<$betailmap'|'#`'|'+out]"!]

53 ไบต์: [:...lcm'-'*@z#-'.'*'('\+')'+'.'+[z\'$1|'repl out]"!]

54 ไบต์: [:...lcm@x{!x'-'*('('n#-'.'*').')''#`'$1|'repl out}"!]


1

JavaScript (ES6), 89

f=(a,b,t=`
`,l=0,R=n=>'-'.repeat(n-1)+'|')=>l||1/t?f(a,b,l<0?t+R(b,l+=b):R(a,l-=a)+t,l):t

การประเมิน LCM ด้วยการเสพติดซ้ำแล้วซ้ำอีก

น้อย golfed

F=(a,b, sa='', sb='', la=0, lb=0)=>
{
    var R=n=>'-'.repeat(n-1)+'|'
    if (la != lb || la == 0)
    {
        if (la < lb) {
            sa += R(a)
            la += a
        }
        else
        {
            sb += R(b)
            lb += b
        }
        return F(a, b, sa, sb, la, lb)
    }
    else
        return sa+'\n'+sb
}

ทดสอบ

f=(a,b,t=`
`,l=0,R=n=>'-'.repeat(n-1)+'|')=>l||1/t?f(a,b,l<0?t+R(b,l+=b):R(a,l-=a)+t,l):t

function update()
{
  var [a,b]=I.value.match(/\d+/g)
  R.textContent = f(+a,+b)
}  

update()
<input id=I oninput='update()' value='4 6'>
<pre id=R></pre>


1

VBA (Excel), 144 142 ไบต์

Sub q()
a=[a1]
b=[a2]
Do Until c=d And d="|"
e=e+1
c=IIf(e Mod a,"-","|")
d=IIf(e Mod b,"-","|")
f=f& c
g=g& d
Loop
Debug.? f& vbCr& g
End Sub

-2 ไบต์ ขอบคุณ Sir Washington Guedes


ใช่ขอบคุณ @WashingtonGuedes :)
remoel

1

Ruby , 64 57 ไบต์

->a,b{[a,b].map{|n|(1..a.lcm(b)).map{|x|x%n>0??-:?|}*''}}

-7 ไบต์ขอบคุณ G G

ลองออนไลน์!


คุณไม่จำเป็นต้องใส่ 'puts' ถ้าฟังก์ชั่นคืน 2 สตริงมันก็โอเค และคุณสามารถทำให้มันสั้นลงโดยใช้ตัวดำเนินการ array * (array * '' เทียบเท่ากับ array.join)
GB

@GB ขอบคุณสำหรับความช่วยเหลือของคุณ!
ขนมขบเคี้ยว

1

ถ่าน , 32 30 29 ไบต์

NθNη≔θζW﹪ζη≦⁺θζE⟦θη⟧…⁺×-⁻ι¹|ζ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด แก้ไข: บันทึก 1 ไบต์ต้องขอบคุณ @ ASCII-only



@ ASCII เท่านั้นมีอะไรใหม่สำหรับเอกสาร!
Neil

ขอบคุณสำหรับการบันทึก! (ขออภัยฉันไม่รู้สึกว่าชอบการจัดทำเอกสารแม้ว่าฉันควรจะทำจริงๆ ) หากคุณไม่คิดว่าจะมีเอกสารอีกมากที่chat.stackexchange.com/transcript/240?m=40270513#40270513 แชท. ? co.th / ถอดเสียง / 240 m = 40270838 # 40270838 (ไม่แน่ใจว่าบรรยากาศทิศทางที่ควรจะไปพวกเขาไม่ได้คำสั่งหรือพวกเขาประกอบการ)
ASCII เท่านั้น

1

Google ชีตขนาด 77 ไบต์

สูตรเวิร์กชีทแบบไม่ระบุชื่อที่รับอินพุตจากช่วงA1:B1และเอาต์พุตไปยังเซลล์ที่เรียก

=REPT(REPT("-",A1-1)&"|",LCM(1:1)/A1)&"
"&REPT(REPT("-",B1-1)&"|",LCM(1:1)/B1

-4 ไบต์ขอบคุณ@EngineerToast


1
คุณสามารถทึกทักเอาได้ว่าไม่มีสิ่งใดป้อนเข้าแถว 1? ถ้าเป็นเช่นนั้นคุณสามารถย่อLCM(A1,B1)ให้เหลือเพียงLCM(1:1)4 ไบต์ ฉันคิดว่ามันสมเหตุสมผลที่จะเข้าใจแผ่นเริ่มต้นที่ว่างเปล่าและระบุว่าทั้งอินพุตและสูตรอยู่ที่ไหน
Engineer Toast

1

Excel VBA ขนาด 79 ไบต์

ฟังก์ชันหน้าต่างแบบไม่ระบุชื่อ VBE แบบทันทีที่รับอินพุตจากช่วง[A1:B1]และแสดงผลการสร้างภาพ LCM ของพวกเขาไปยังหน้าต่างทันที VBE

นี้เป็นท่าเรือของฉันคำตอบของ Google แผ่น

?[Rept(Rept("-",A1-1)&"|",LCM(1:1)/A1)]:?[Rept(Rept("-",B1-1)&"|",LCM(1:1)/B1)]

1

Japt , 12 ไบต์

£×/Ury)î|ù-X

ล่าม Japt

อินพุตเป็นอาร์เรย์ของตัวเลข เอาต์พุตเป็นอาร์เรย์ของสตริง แฟล็ก -R ปรับปรุงลักษณะของเอาต์พุตเล็กน้อย แต่ไม่จำเป็นสำหรับตรรกะ

คำอธิบาย:

£              For each of the two inputs as X, print...
        |           The string "|"
         ù-X        Left-padded with "-" until it is X characters long
       î            Repeated until its length is
 ×/Ury)             The Least Common Multiple

ขอขอบคุณ Shaggy สำหรับการค้นหาไบต์เพื่อบันทึก



@Shaggy ที่น่าสนใจฉันไม่เคยคิดที่จะใช้ส่วนหนึ่งของ Japt ในวิธีที่แน่นอน
Kamil Drakari

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