การสร้างการไล่ระดับสี RGB


18

ความท้าทาย

กำหนดสตริงเลขฐานสิบหกสองตัวพิมพ์ใหญ่ (ทั้ง 6 ตัวยาว XXXXXX และ YYYYYY) แทนค่า RGB (ตั้งแต่000000ไปจนถึงFFFFFFรวม) และเลขจำนวนเต็มบวกที่ไม่เป็นศูนย์บวกแสดงการเปลี่ยนสีเชิงเส้นของสี N + 2 ที่สร้างจาก XXXXXX เป็น YYYYYY ที่จะส่งผลให้การไล่ระดับสี

ตัวอย่าง

อินพุต

FF3762
F08800
9

เอาท์พุต

โปรดทราบในตัวอย่างของเราฉันได้ขอ 9 ขั้นตอนชั่วคราวระหว่างสองสีดังนั้น 11 บรรทัดจะแสดงจากสีเริ่มต้นไปจนถึงสีสุดท้าย

FF3762
FD3F58
FC474E
FA4F44
F9573A
F75F31
F66727
F46F1D
F37713
F17F09
F08800

คำเตือน

ในขณะที่ฉันได้ไปกับกระบวนการเชิงเส้นอย่างง่าย ๆ ของการรับค่าจำนวนเต็มสำหรับสีชั่วคราวก่อนที่จะแปลงกลับเป็นเลขฐานสิบหกวิธีการของคุณอาจแตกต่างกันไป โปรดพิจารณาวิธีการที่หลากหลายที่เราสามารถปัดเศษตัวเลขขึ้น / ลงของคุณได้

การทดสอบ

เพื่อทำให้สิ่งนี้น่าสนใจเราได้จัดเตรียมข้อมูลโค้ดเพื่อให้สามารถทดสอบโค้ดของคุณรวมถึงปุ่มเพื่อให้คุณมีสองสีแบบสุ่มเพื่อทดสอบโค้ดของคุณ การแสดงผลลัพธ์ของคุณเป็นตัวเลือก แต่สนับสนุน!

c1=()=>('00000'+(Math.random()*(1<<24)|0).toString(16)).slice(-6);

$("#col").click(function(){
  alert("Your two colors are: "+c1()+" and "+c1()+".");
});
        
$("#colors").blur(function(){
  $("#test").empty();
	var colArr = $("#colors").val().split("\n");
	for(c in colArr){
  	$("#test").append('<div class="tester" style="background-color:#'+colArr[c]+';">'+colArr[c]+'</div>')
  }
  
});
.tester{height: 20px;
width: 60px;padding: 4px;border: 1px solid black;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="col">Your two colors</button><br />
<textarea id="colors"></textarea>
<div id="test">

</div>

1) คุณสามารถเข้าถึงสีแบบสุ่มสองสีสำหรับการทดสอบของคุณโดยคลิกที่ปุ่ม "สองสีของคุณ" 2) จำนวนขั้นตอนระหว่างกาลจะเหมือนกับจำนวนตัวอักษรในชื่อผู้ใช้ PPCG ของคุณรวมถึงช่องว่างในกรณีของ "WallyWest" จะเป็น 9 (ตามตัวอย่างของฉันด้านบน) 3) เรียกใช้รหัสของคุณด้วยสองสีและจำนวนและเมื่อคุณมีรายการที่สร้างขึ้นคุณมีตัวเลือกในการวางผลลัพธ์ของคุณลงใน textarea และแท็บออกจากมันเพื่อไล่ระดับสีที่สร้างขึ้น

ตัวอย่างของฉันแสดงที่นี่:

การไล่ระดับสี

ฉันต้องยอมรับว่ามันดูยอดเยี่ยม!

โปรดทราบ: ดังที่ฉันกล่าวถึงการแสดงการทดสอบผลลัพธ์ของคุณโดยใช้ตัวอย่างเป็นตัวเลือก แต่ได้รับการสนับสนุน! :)

เอาท์พุต

รายการผลลัพธ์จะต้องอยู่ในรูปของ N + 2 ชุดของตัวเลขฐานสิบหก 6 หลักคั่นด้วยตัวดึงข้อมูลบรรทัด (\ n) ดังที่แสดงในตัวอย่างข้างต้น เอาต์พุตสามารถอยู่ในรูปแบบของเส้นแยกช่องว่าง / รายการคั่นด้วยจุลภาคอาเรย์หรืออะไรก็ตามที่เหมาะสมที่สุดสำหรับภาษาของคุณ ... (ขอบคุณ @nimi สำหรับส่วนหัว)โปรดจำไว้ว่าถ้าคุณวางแผนที่จะทดสอบโค้ดด้วย ตัวอย่าง แต่คุณแยก "สี" แต่ละสีขึ้นอยู่กับคุณ

กฎระเบียบ

นี่คือโค้ดกอล์ฟดังนั้นวิธีแก้ปัญหาที่สั้นที่สุดในหน่วยไบต์จะถูกครองตำแหน่งผู้ชนะ ไม่มีช่องโหว่ตามธรรมชาติ อินพุตต้องยอมรับทั้งสองสตริงและตัวเลข (ซึ่งอย่างที่ฉันบอกไว้จะเท่ากับจำนวนตัวอักษรในชื่อผู้ใช้ของคุณใน PPCG ดังนั้นผลลัพธ์ที่ได้ของคุณจะต้องมีความยาวอย่างน้อยสามบรรทัด


2
โปรดช่วยให้การส่งออกในรูปแบบรายการ / อาร์เรย์สำหรับทุกภาษา
nimi

ตั้งข้อสังเกตและอัปเดต ... ขอบคุณสำหรับหัวขึ้น (+1)
WallyWest

นอกเหนือจากความอยากรู้แล้วแอพรูปภาพอย่าง Illustrator ใช้การไล่ระดับสีเชิงเส้นหรือการไล่ระดับสีในพื้นที่สีที่รับรู้หรือไม่? ฉันสามารถดูกรณีการใช้งานสำหรับทั้งคู่ (บางทีคุณอาจกำลังเปลี่ยนไปใช้การรับรู้ในภายหลังเช่นพื้นผิวสำหรับเกม)
Robert Fraser

คำตอบ:


1

MATL , 31 ไบต์

2+1yhjjh2e!1ZA3e!b:1&Ynk8W5Y2Za

วิธีนี้ใช้การแก้ไขเชิงเส้นด้วยการปัดเศษลง รูปแบบอินพุตคือ

9
FF3762
F08800

ลองออนไลน์!

เอาต์พุตกราฟิก 31 ไบต์

2+1yhjjh2e!1ZA3e!b:t2YG1&Ynk2ZG

นี่คือผลลัพธ์สำหรับอินพุต

5
FF3762
F08800

ป้อนคำอธิบายรูปภาพที่นี่

ลองใช้งานในMATL Online ! ล่ามกำลังทดลองอยู่ หากคุณไม่ได้รับการรีเฟรชหน้าใด ๆ แล้วกด "Run" อีกครั้ง


4

JavaScript (ES6), 130 ไบต์

g=
(f,t,n)=>[...Array(++n+1)].map((_,i)=>f.replace(/../g,(e,j)=>((`0x${e}`*(n-i)+`0x${t[j]+t[j+1]}`*i)/n|256).toString(16).slice(1)))
;
p=_=>g(f.value,t.value,+n.value).map(e=>o.insertRow().insertCell().appendChild(document.createTextNode(e)).parentNode.bgColor=e);
<input id=f value=e14f09><input id=t value=9a04f6><input id=n value=4 type=number><input type=button onclick=p() value=Go!><table id=o bgcolor=black cellpadding=4>


3

Dyalog APL ขนาด 44 ไบต์

แสดงพร้อมต์สำหรับNแล้วตามด้วยB eginning-color จากนั้นเลือกE nding-color ความต้องการ⎕IO←0ซึ่งเป็นค่าเริ่มต้นในหลาย ๆ ระบบ

h[↑⌊B∘+¨(⍳2+N)×(-/E B←(h←⎕D,⎕A)∘⍳¨⍞⍞)÷1+N←⎕]

h[... ]ดัชนีเป็นh (ซึ่งมีค่าเมื่อเราประเมินเนื้อหาของวงเล็บปีกกาเสร็จ)

N←⎕พรอมต์สำหรับตัวเลขN (4)

1+เพิ่มหนึ่งลงในN (5)

(... ใช้สิ่งนั้นเพื่อหารผลลัพธ์ของ ...

  ⍞⍞ พรอมต์สำหรับสตริงอักขระสองตัว ["7E0E7E", "FF3762"]

  (... )∘⍳¨ค้นหาดัชนีของอักขระของสตริงแต่ละตัวใน ...

   ⎕D,⎕A D igits ตามด้วยA lphabet

   h←มอบหมายให้กับh

  ตอนนี้เรามี "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

  E B←กำหนดดัชนีให้กับEและB [[7,14,0,14,7,14], [15,15,3,7,6,2]

  -/ลบและใส่BจากE [[-8, -1, -3,7,1,12]]

  ผลลัพธ์ที่ได้คือ [[-1.6, -0.2, -0.6,1.4,0.2,2.4]]

(... คูณสิ่งนี้ด้วย ...

  2+NสองบวกN (6)

   จำนวนเต็มแรก [0,1,2,3,4,5]

 สิ่งนี้ทำให้เรา [[0,0,0,0,0,0], [- 1.6, -0.2, -0.6,1.4,0.2,2.4], [- 3.2, -0.4, -1.2,2.8,0.4,4.8 ] ... ]

B∘+¨เพิ่มBให้กับ [[15,15,3,7,6,2], [13.4,14.8,2.4,8.4,6.2,4.4], [11.8,14.6,1.8,9.8,6.8,6.8], ... ]

ปัดเศษ [[15,15,3,7,6,2], [13,14,2,8,6,4], [11,14,1,9,6,6], ... ]

ทำรายการของรายการลงในตาราง

[[15,15, 3, 7, 6, 2]
 [13,14, 2, 8, 6, 4]
 [11,14, 1, 9, 6, 6]
 [10,14, 1,11, 6, 9]
 [ 8,14, 0,12, 6,11]
 [ 7,14, 0,14, 7,14]]

ที่นี่เราจัดทำดัชนีเป็นhให้

[["F","F","3","7","6","2]
 ["D","E","2","8","6","4]
 ["B","E","1","9","6","6]
 ["A","E","1","B","6","9]
 ["8","E","0","C","6","B]
 ["7","E","0","E","7","E]]

ซึ่งเหมือนกับ

[["FF3762"]
 ["DE2864"]
 ["BE1966"]
 ["AE1B69"]
 ["8E0C6B"]
 ["7E0E7E"]]

และพิมพ์เป็น

FF3762
DE2864
BE1966
AE1B69
8E0C6B
7E0E7E

ลาด

ลองใช้ออนไลน์!


เยี่ยมมาก! การเปลี่ยนแปลงดูดีมาก!
WallyWest

@WallyWest ขอบคุณ มันอาจเป็นการเปลี่ยนแปลงเชิงเส้นที่แตกต่างจากที่ทำกันมากที่สุด: ตัวอักษรแต่ละตัวมีการเปลี่ยนแยก
อดัม

2

Pyth - 35 ไบต์

น่ากลัวกอล์ฟเพียงแค่ยอมแพ้

j++hQsMCm.HMsM:F+dc-FdvzCmiR16cd2Qe

ลองมันออนไลน์ได้ที่นี่

ตัวอย่าง:

ตัวอย่าง


ฉันนับการไล่ระดับสี 11 บรรทัดแม้ว่าชื่อ PPCG ของคุณจะมีเพียง 8 ตัวอักษรเท่านั้นดังนั้นคุณไม่ควรป้อน7cb472 93fb8a 8และรับเอาต์พุตเพียง 10 บรรทัดเมื่อทดสอบโค้ดของคุณ
WallyWest

@WallyWest พลาดส่วนนั้นใน OP เกี่ยวกับชื่อผู้ใช้ฉันเพิ่งใช้ 9 cuz ที่คุณทำแก้ไข
Maltysen

@WallyWest อัพเดทแล้ว
Maltysen

เฮ้ @Maltysen, การไล่ระดับสีนั้นดูแปลกไปหน่อย ... คุณมีข้อมูลอ้างอิงสองรายการ93fb8a... รหัสของคุณมีค่าเดียวกันสองบรรทัดหรือไม่?
WallyWest

2

PowerShell v2 +, 176 159 150 ไบต์

param($a,$b,$n)$x=$a-split'(..)'-ne'';$a;++$n..1|%{$j=$_;-join($x=$x|%{"{0:x2}"-f(+"0x$_"-[int]((+"0x$_"-"0x$(($b-split'(..)'-ne'')[$i++%3])")/$j))})}

$xจะเข้าเป็นสองสายและจำนวนแล้วแปลงสตริงเริ่มต้นลงในอาร์เรย์ของสตริงแยกในทุกตัวละครทั้งสองร้านค้าที่เป็น จากนั้นเราจะแสดงผลลัพธ์$aเป็นส่วนเริ่มต้นของเราและวนจาก++$nไป1ยัง

แต่ละซ้ำชุดผู้ช่วย$jจำนวนปัจจุบัน (ใช้ในภายหลังเพื่อให้มั่นใจว่าเราได้มีจำนวนที่เหมาะสมของขั้นตอนระหว่างที่เรากำลังที่จะไปถึงจุดหมายปลายทางของเรา) $xและคำนวณขั้นตอนต่อไปขึ้นอยู่กับวงผ่าน

แต่ละวงด้านในเป็นเพียงการมอบหมาย เรากำลังตั้งค่า$xในตำแหน่งที่เหมาะสมเท่ากับสตริงใหม่"{0:x2}"โดยใช้ตัว-fดำเนินการ ormat x2นี่ระบุสองหลักส่งออกเลขฐานสิบหกและใส่เป็นด้านขวามือของ-fผู้ประกอบการ PowerShell มีผู้ประกอบการเลขฐานสิบหกไปทศนิยมพื้นเมือง0xเพื่อให้มีความยาวแสดงออก parens-ซ้อนกันนี้ใช้ประกอบการว่าการแปลงฐานสิบหกในปัจจุบันไปยังหมายเลขลบที่จะพบความแตกต่างเลยไป (ทำโดยแยกแบบไดนามิก$bที่นี่เช่นเดียวกับที่เราทำไป$a, และใช้โมดูโล่เพื่อเลือกองค์ประกอบที่เหมาะสม) หารด้วย$jขั้นตอนที่เหลือ[int] (PowerShell ทำการปัดเศษของนายธนาคารตามค่าเริ่มต้น) และลบจำนวนขั้นตอนนั้นออกจากฐานสิบหกปัจจุบันเพื่อให้ได้ค่าฐานสิบหกต่อไปของเรา

ผลลัพธ์ของการคำนวณนั้นจะถูกเก็บไว้ใน$xองค์ประกอบหกเหลี่ยม ที่ถูกห่อหุ้มใน parens เพื่อสร้างสำเนาบนไพพ์ไลน์และ-joinรวมเข้าด้วยกันเป็นสตริงเดียว สตริงผลลัพธ์ทั้งหมดเหล่านั้นจะถูกทิ้งไว้บนไพพ์ไลน์และเอาต์พุตผ่านทาง implicit Write-Outputเกิดขึ้นเมื่อเรียกใช้งานโปรแกรม


ตัวอย่าง

ฉันได้รับ0ba7c5และ6c0e50สำหรับสองสีของฉันและTimmyDมีอักขระ 6 ตัวในนั้น

PS C:\Tools\Scripts\golfing> .\rgb-gradients-generation.ps1 '0ba7c5' '6c0e50' 6
0ba7c5
1991b4
277ba3
356592
434f82
513971
5f2361
6c0e50

ตัวอย่างการไล่ระดับสี


1

Python 2, 189 ไบต์

w='[int(%s[i:i+2],16)for i in range(0,6,2)]'
def f(a,b,n):
 l=lambda x,y:'%02x'%int((x*(n-i)+y*i)/n);c,d,e=eval(w%'a');f,g,h=eval(w%'b');n+=1
 for i in range(n+1):print l(c,f)+l(d,g)+l(e,h)

ภาพหน้าจอไล่ระดับสี


สีสวยคู่ @AndrewEpstein ... ใช้งานได้ดีกับรหัส!
WallyWest

1

[Groovy] การปรับปรุงครั้งสุดท้าย (199 ไบต์) - ตามคำขอ

Non-กอล์ฟ

def g(a,b,n){
  (0..(1.0/n)).collect{
    c->
    x={s->s.split("(?<=\\G.{2})").collect{Integer.parseInt(it,16)}};
    (0..2).collect {
      (int)(x(a).get(it)*n*c+x(b).get(it)*(1-n*c))
    }.collect {
      String.format("%X", it)
    }.join()
  }
}
g('FFFFFF','000000',1/10​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​)​​​​​​​​​​​​​​

กอล์ฟ

g(a,b,n){(0..(1.0/n)).collect{c->x={s->s.split("(?<=\\G.{2})").collect{Integer.parseInt(it,16)}};(0..2).collect {(int)(x(a).get(it)*n*c+x(b).get(it)*(1-n*c))}.collect{String.format("%X",it)}.join()}}

ลองขั้นสุดท้ายได้ที่นี่: https://groovyconsole.appspot.com/script/5130696796405760


รุ่นเก่าด้านล่างถูกประกาศโดย OP


Groovy (123 ไบต์)

กอล์ฟ

def g(r,g,b,r2,g2,b2,s){(1..(1.0/s)).collect{c->[(int)(r*s*c+r2*(1-s*c)),(int)(g*s*c+g2*(1-s*c)),(int)(b*s*c+b2*(1-s*c))]}}

Non-กอล์ฟ

def g(r,g,b,r2,g2,b2,s){
  (1..(1.0/s)).collect {
    c ->
    [(int)(r*s*c+r2*(1-s*c)),(int)(g*s*c+g2*(1-s*c)),(int)(b*s*c+b2*(1-s*c))]
  }
}

ปัจจัยการผลิต

r,g,b -> Starting RGB Color
r2,g2,b2 -> Ending RGB Color
s -> Gradient step

ตัวอย่างผลลัพธ์

(00,00,00,255,255,255,.5)

ผลลัพธ์ใน

[
  [255, 255, 255]
  [127, 127, 127]
  [0, 0, 0]
]

ลองด้วยตัวคุณเอง: https://groovyconsole.appspot.com/script/5184465357766656

ด้วยการแปลง Hex รวม

เดาว่าฉันเป็นคนขี้โกงเช่นกัน ... นี่คือสคริปต์ที่ใช้ hex:

รหัสใหม่ที่มีการแปลงฐานสิบหก:

​    def g(r,g,b,r2,g2,b2,s){
      (0..(1.0/s)).collect {
        c ->
        String.format("%X", ((int)(r*s*c+r2*(1-s*c)))) +  String.format("%X", ((int)(g*s*c+g2*(1-s*c)))) + "" +  String.format("%X", ((int)(b*s*c+b2*(1-s*c))))
      }
    }

    g(126,34,166,218,26,33,0.0625)​

188 ตัวอักษรเมื่อเล่นกอล์ฟ:

def g(r,g,b,r2,g2,b2,s){(0..(1.0/s)).collect {c->String.format("%X",((int)(r*s*c+r2*(1-s*c))))+String.format("%X",((int)(g*s*c+g2*(1-s*c))))+String.format("%X",((int)(b*s*c+b2*(1-s*c))))}}

เอาต์พุตสำหรับ 000000 ถึง FFFFFF และ 16 (ความยาวชื่อผู้ใช้)

g(00,00,00,255,255,255,0.0625).each{println it}​

ไล่โทนสีเดียวกับขั้นตอน 1/16


ผิดพลาด ... ไม่ถูกต้องเล็กน้อยใช้เวอร์ชันดั้งเดิม "(0 .. (1.0 / s))" ควรเป็น "(1 .. (1.0 / s))"
Magic Octopus Urn

1
สวัสดี @carusocomputing ... ข้อมูลที่ป้อนต้องเป็นสตริงเลขฐานสิบหกสองตัวและจำนวนเต็ม ... ฉันไม่แน่ใจว่า Groovy สามารถป้อนข้อมูลในรูปแบบนี้ได้ไหม แต่คุณยังไม่ได้สรุปสั้น ๆ ... คุณช่วยปรับปรุงได้ไหม รหัสของคุณขึ้นอยู่กับการป้อนข้อมูลที่กล่าวถึงในส่วนความท้าทาย?
WallyWest

{s-> s.split("(?<=\\G.{2})").collect{Integer.parseInt(it,16)}}('FFFFFF') ผลลัพธ์ใน [255,255,255] ฉันสามารถเพิ่ม 62 ไบต์ในรหัสของฉันโดยใช้การแปลงนั้นหากคุณต้องการให้ฉันจริงๆ
Magic Octopus Urn

1
เก่งฉันได้เพิ่มเวอร์ชันที่อัปเดตแล้วและเพิ่มจำนวนไบต์สุดท้ายของฉันเป็น 199 โดยมี Conversion รวมอยู่ด้วย
Magic Octopus Urn

1

R, 68 ไบต์

มีฟังก์ชั่นในตัวที่จะแก้ไขสองสี:

a=scan(,'')
colorRampPalette(paste0("#",a[1:2]))(as.numeric(a[3])+2)

การป้อนข้อมูล:

d9e7a5
3ef951
15

เอาท์พุท: เวกเตอร์ที่มีค่า

"#D9E7A5" "#CFE89F" "#C5E99A" "#BBEA95" "#B2EB90" "#A8EC8A" "#9EED85" "#95EE80"
"#8BF07B" "#81F175" "#78F270" "#6EF36B" "#64F466" "#5BF560" "#51F65B" "#47F756"
"#3EF951"

ข้อกำหนดสีใน R ต้องใช้สัญลักษณ์แฮช

ทางลาดสี

ลองพล็อตเรื่องเช่นฟังก์ชั่น:

filled.contour(outer(1:20, 1:20, function(x,y) sin(sqrt(x*y)/3)),
    col = colorRampPalette(paste0("#",a[1:2]))(as.numeric(a[3])+2))

บาป (sqrt (x * y) / 3)


คำตอบที่ยอดเยี่ยม แต่สั้น ๆ ขอให้ใช้ขั้นตอนมากที่สุดเท่าที่มีในชื่อผู้ใช้ PPCG ของคุณซึ่งการนับพื้นที่ทำให้มี 15 ... คุณช่วยอัพเดทคำตอบของคุณได้FF3762 F08800 15ไหม?
WallyWest

@WallyWest ขออภัยฉันพลาดส่วนหนึ่งที่มีสองสีและนับความยาวชื่อผู้ใช้ของเขาเอง ตอนนี้คำตอบควรเป็นไปตามข้อกำหนดอย่างเต็มที่!
Andreï Kostyrka

1

C, 175 169 168 ไบต์

i;j;x[6];f(a,b,n)char*a,*b;{char*f="%2x%2x%02x";for(n++;i<=n;i++,puts(""))for(j=sscanf(a,f,x,x+1,x+2)-sscanf(b,f,x+3,x+4,x+5);j++<printf(f+6,x[j]+(x[j+3]-x[j])*i/n););}

Ungolfed:

int i, j;
int x[3], y[3];

f(char *a, char *b, int n) {
  sscanf(a, "%2x%2x%2x", &x[0], &x[1], &x[2]);
  sscanf(b, "%2x%2x%2x", &y[0], &y[1], &y[2]);

  for(i = 0, n++; i <= n; i++) {
    for(j = 0; j < 3; j++)
      printf("%02x", x[j] + (y[j] - x[j]) * i / n);
    puts("");
  }
}

ขอบคุณ @ h-walters สำหรับการกำจัด 5 ไบต์!


เตือนฉันว่าputsไวยากรณ์ทำงานอีกครั้งได้อย่างไร
WallyWest

มันเป็นเหมือนprintf()แต่ไม่ได้ทำการจัดรูปแบบใด ๆ แต่เพียงแค่พิมพ์สตริงที่กำหนดตามที่เป็นอยู่และเพิ่มบรรทัดใหม่
G. Sliepen

อ่าไม่มีทางเล่นกอล์ฟนั่น ... C ค่อนข้างเข้มงวดแบบนั้นใช่ไหม?
WallyWest

"ดังนั้นจึงไม่มีทางที่จะตีกอล์ฟ" ... แน่นอนว่ามี! ย้ายputs("")ไปยังส่วนที่สามของส่วนแรกสำหรับลูป ( ;หลังจากกลายเป็น,ก่อน) ... +0 ไบต์ อย่างไรก็ตามการทำเช่นนี้ช่วยให้คุณสามารถลบเครื่องหมายปีกกาหลังวนลูปที่สอง ... -2 ไบต์ คุณสามารถบันทึกอีก 1 ไบต์โดยลบ 3 จากj<3และแทนที่ด้วยprintfคำสั่งของคุณ(นี่คือส่อเสียด ... printf จะกลับ 2 เท่านั้น แต่ยังต้องประเมินครั้งที่สาม)
H Walters

... ไบต์ที่สองมากขึ้นจะถูกบันทึกไว้โดยการหักค่าผลตอบแทน sscanf ของคุณจากแต่ละอื่น ๆ (ที่เกิดใน 0), และการใช้ที่แทนตัวอักษรใน0 j=0เมื่อทุกอย่างอยู่ที่นี่แล้วโปรแกรมของคุณควรสั้นลง 5 ไบต์และอย่างน้อย 50% คนแปลกหน้า
H Walters

1

sh + ImageMagick, 81 ไบต์

convert -size 1x$((2+$3)) gradient:#$1-#$2 -depth 8 txt:-|grep -o "[A-F0-9]\{6\}"

การใช้งาน:

> ./grad.sh FF3762 F08800 9
FF3762
FE3F58
FC474E
FB4F45
F9573B
F86031
F66827
F5701D
F37814
F2800A
F08800

("-depth 8" ไม่จำเป็นถ้า IM ของคุณถูกคอมไพล์ด้วย 8bpp เป็นค่าเริ่มต้น)

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