首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成堆栈溢出徽标

生成堆栈溢出徽标
EN

Code Golf用户
提问于 2012-01-07 10:47:23
回答 9查看 6.5K关注 0票数 47

的挑战是生成一个类似于StackOverflow徽标:

的图像

输出必须包含:

  • 图像大小64*64或更大
  • 灰色|__|型底座
  • 从底部出来的弯曲的分段堆叠。这些片段将从灰色变为橙色,并向右转90度左右。节段数应在5至7之间,其中6节为首选。

注意:对于缺少颜色的ascii显示器,使用'0‘字符表示灰色,'9’表示橙色。'1‘到'8’代表中间的阴影。

Restrictions:

  • 你必须生成图像。不允许加载图像或将其存储在代码/二进制文件中。

附加规则/信息:

  • 该图像不要求与标志相同,但它必须是可识别的。
  • 显示的方法由你决定。将其保存到图像文件或显示在屏幕上都是可以接受的。

评判/获奖标准:

  • 图像的准确性是首要的条件。
  • 优雅的代际是次要的条件
EN

回答 9

Code Golf用户

回答已采纳

发布于 2012-01-08 05:45:18

Mathematica

代码语言:javascript
复制
Graphics[{
   Gray, Rectangle[{0, 0}, {78, 50}],
   White, Rectangle[{9, 9}, {69, 50}]}
  ~Join~
  Table[{
    Blend[{Gray, Orange}, x/5],
    Rotate[
     Translate[
      Rectangle[{16, 16}, {61, 25}],
      {0.25x^3 + 0.6x^2 - 0.4x, -0.53x^3 + 3.26x^2 + 12x}],
     -0.05x^2 - 0.04x]},
   {x, 0, 5}]]

当我意识到这不是暗号高尔夫时,我决定美化我的答案。哇哦!

截图:

在相关新闻中,我还创建了我认为堆栈溢出标志在.未来:

如果有人想玩这个游戏的话,请看下面的代码(对不起,这里太乱了):

代码语言:javascript
复制
Graphics3D[{EdgeForm[],
   Opacity[1],
   RGBColor[0.2, 0.2, 0.2], Cuboid[{0, 0, 0}, {78, 4, 50}],
   Cuboid[{0, 4, 0}, {4, 45, 50}],
    Cuboid[{74, 4, 0}, {78, 45, 50}],
   Opacity[1]}
  ~Join~
  Fold[Join, {},
   Table[{Hue[0.15 - i/5/12, i/3, 1],
     Translate[
      Rotate[
       Scale[Cuboid[{16, 16, 16}, {61, 25, 25}], {1, .3, .3}],
       (-.05 ((i*2 - 1.5)*1.25)^2 - .04 ((i*2)*1.2)), {0.3, 
        0.8, -1}, {(16 + 61)/2, (16 + 25)/2, (16 + 25)/2}],
      {-((i*2)^2 - (i*2)*4)/2, (i*2)^2*3/2, 0}]},
    {i, 0, 4.5, 0.05}]], Lighting -> "Neutral", Axes -> False, 
 Background -> White, Boxed -> False]
票数 61
EN

Code Golf用户

发布于 2012-01-07 16:17:44

Javascript (650)

我编写了一个quine,它读取函数中的字符,并将非空格字符替换为0-9的数字。

代码语言:javascript
复制
(function a(){
l=[
                   1,
                    1,
            11,      1,
             11,     1,
               11,    1,
       11,      11,   1,
         11,      11,
           11,
   11,       1111,
     1111,
0,       11111111, 0,
0, 11,             0,
0,   111111111111, 0,
0,                 0,
0, 11111111111111, 0,
0,                 0,
000000000000000000000]

b=a.toString().split("[")[1].split("]")[0].split(""),i=-1
document.getElementById("output").innerHTML=
b.map(function(c){
++i
if(c==" "||c=="\n")return c
if(c!=0)c=9-Math.floor((i/b.length)*10)
if(b[i-1]=="0")c=0
return"<span class='c"+c+"'>"+c+"</span>"
}).join("")
})()

这将输出ASCII技术:

代码语言:javascript
复制
                   99
                    88
            888      88
             777     77
               766    66
       666      666   66
         555      555
           555
   444       44444
     44444
00       333333333 00
00 333             00
00   2222222222222 00
00                 00
00 111111111111111 00
00                 00
000000000000000000000

,如果您愿意的话,可以用css样式表对其进行着色。

代码语言:javascript
复制
  span{
    font-weight: bold;
  }
  .c0, .c1{
    color: #222;
  }
  .c2{
    color: #765;
  }
  .c3{
    color: #976;
  }
  .c4{
    color: #A64;
  }
  .c6, .c5{
    color: #D51;
  }
  .c8, .c9, .c7{
    color: #F60;
  }

你可以在jsBin上看到它的作用

这是一个屏幕截图,以防链接失效:

票数 23
EN

Code Golf用户

发布于 2012-01-17 16:41:37

SVG (347个字符)

基于先生_拉格索罗版本,用笔画代替填充。除了剃掉几个字符之外,代码更简单,输出看起来更好地放大。

代码语言:javascript
复制
<svg width="66" height="85" xmlns="http://www.w3.org/2000/svg">
<g stroke-width="7" fill="none">
<path stroke="gray" d="m4,50v31h49V50M12,69h33"/>
<path stroke="#a86" d="m12,57 33,3"/>
<path stroke="#b95" d="m14,42 32,9"/>
<path stroke="#c82" d="m22,24 27,19"/>
<path stroke="#e80" d="m37,9 18,27"/>
<path stroke="#f71" d="m58,1 4,32"/>
</g></svg>

链接到SVG图像

呈现为PNG (以自然大小并放大x2和x3):

编辑:最后,解决了一个错误,导致框的两侧不对齐。还调整了线的厚度和端点的位置一点,并增加了明确的宽度和高度,以避免底部和右缘裁剪过紧。现在它看起来更接近官方标志了。

票数 22
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/4561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档