首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要么站在那里,要么站成正方形!

要么站在那里,要么站成正方形!
EN

Code Golf用户
提问于 2017-01-22 19:30:45
回答 5查看 1.4K关注 0票数 22

每个人都听说过“在那里或正方形”这句话。所以我想是时候对它进行挑战了。

输入

您将以一个完整的绝对目录地址作为文本,通过STDIN或同等方式输入。

输出

如果目录地址存在且有效,则程序将移动到计算机上的该文件夹。否则,它将通过STDOUT输出或等效于以下方格:

代码语言:javascript
复制
+-+
| |
+-+

需求

  • 标准的漏洞是不允许的。
  • 如果不可避免的话,您可以输出一个尾换行符。
  • 如果程序已被移动,则程序必须不产生任何输出。
  • 您的程序必须能够在移动到的任何地方再次运行。

假设

  • 您可以假设输入从来不是空的。
  • 您可能会假设该目录从没有一个文件名追加到末尾。
  • 您可能会假设输入目录永远不是当前目录。
  • 您可以假设您拥有在任何地方编写和执行的权限。

这是密码-高尔夫,所以最短的答案以字节为单位获胜。

EN

回答 5

Code Golf用户

发布于 2017-01-22 20:43:54

批处理,80字节

代码语言:javascript
复制
@if not "%1"=="" move %0 %1\>nul 2>nul&&%1\%~nx0||(echo +-+&echo ^| ^|&echo +-+)

如果您在批处理文件运行时移动它,Batch不喜欢它,因此通过调用%1\%~nx0 (这是批处理文件的新名称),批处理停止寻找旧批处理文件。

票数 4
EN

Code Golf用户

发布于 2017-01-22 20:27:25

Python3,71字节

代码语言:javascript
复制
from shutil import*
try:move('f',input())
except:print("+-+\n| |\n+-+")

它必须在一个名为f的文件中

相当简单。它试图将自己移动到STDIN上给它的任何目录,如果发生错误,它会打印该框。

票数 1
EN

Code Golf用户

发布于 2017-01-24 10:43:24

C 137个字节

代码语言:javascript
复制
#include<dirent.h> g(char *f,char *z){DIR* d=opendir(z);if(d){strcat(z,f);rename(f,z);}else{puts("+-+");puts("| |");puts("+-+");}}

非高尔夫版本:

代码语言:javascript
复制
#include<dirent.h> 
g(char *f,char *z)
{ 
  DIR* d=opendir(z);
  if(d)
  {
    strcat(z,f);
    rename(f,z);
  }
  else
  {
    puts("+-+");
    puts("| |");
    puts("+-+");
  }
}

f接受文件名,z接受目录名。目标字符串是zf的连接。rename()用于将文件移动到新位置。

main()应该是这样的:

代码语言:javascript
复制
int main(int argc, char *argv[])
{
    g(argv[0]+2,argv[1]); // 1st arg is the Destination string
    return 0;
},

一定会被缩短!

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

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

复制
相关文章

相似问题

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