[信息与未来 2024] 图灵完备

题目描述

 

你不需要看懂这张图片;但如果你看懂了,会觉得它很有趣。)

JavaScript 是一种功能强大且灵活的编程语言,也是现代 Web 开发的三大支柱之一 (另外两个是 HTML 和 CSS)。灵活的 JavaScript 包含“自动类型转换”的语言特性。例如,JavaScript 认为[](空数组)和 0 是可以比较且相等的。自动类型转换带来的一个后果是我们可以只用 ()+[]! 这 6 个字符编写任意功能的 JavaScript 程序,包括游戏和交互网页。

Dr. X 请你帮他为整数 nn 生成一段仅包含 ()+[]! 字符的 JavaScript 代码,且代码的运行结果恰好为整数 nn。解决这个题目不需要任何 JavaScript 语言知识。压缩包中提供了人工智能实现的 jsexplorer.html 小工具,双击打开可以运行 JavaScript 代码并检查运行结果。

jsexplorer.html https://www.luogu.com.cn/fe/api/problem/downloadAttachment/pt517ofu

输入格式 

输入一个非负整数 n,为你需要构造的目标数字。

输出格式

输出一行一个 JavaScript 程序,且仅由 ()+[]! 六个字符构成。在 jsexplorer.html 中执行它可以得到整数 n。本题答案不唯一,输出任意不超过 5000 个字符的解即可。

输入输出样例

输入 #1

0

输出 #1

+[]

分析1

这一题的难度很高,很难搞懂,初次试的时候要有耐心

薄主差点崩溃

0的时候要特判

其他的时候就叠加 ++[ ]

然后就写出了这样的程序

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	if(n==0){
		cout<<"+[]";
	}
	else{
		for(int i=1;i<=n;i++){
			cout<<"+!![]";
		}
	}
	return 0;
}

但是好像不太行(刑)

这样能表示到1000(数据有一点严了,实际考试能拿到%60的分)

分析2

但在我找到了这个网站之后,every things are different.

JSFuck - Write any JavaScript with 6 Characters: []()!+JSFuck is an esoteric and educational programming style based on the atomic parts of JavaScript. It uses only six different characters to execute code.https://jsfuck.com/里面的表述无敌了!!!

让后,就写出了这样的代码

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a[10];
	int t=0;
	if(n==0){
		cout<<"+[]";
		return 0;
	}
	while(n!=0){
		t++;
		a[t]=n%10;
		n/=10;
	}
	
	cout<<"+(";
	for(int i=t;i>=1;i--){
		cout<<"(";
		for(int j=1;j<=a[i];j++){
			cout<<"+!+[]";
		}
		cout<<"+[])";
		if(i!=1) cout<<"+";
	}
	cout<<")";
	return 0;
}

AC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值